2013-02-24 2 views
2

Я знаю, как найти угол между двумя векторами, но он всегда дает мне внутренний угол, но я хочу, чтобы он всегда менял угол в направлении против часовой стрелки, даже если он больше 180. Я использую C++, но это не очень важно, потому что мне нужно получить теорию.Как узнать, является ли угол между двумя векторами внешним или внутренним?

Это то, что я использую сейчас formula

ответ

10

Вы ищете atan2(y,x) функции (http://en.wikipedia.org/wiki/Atan2). Если вы дадите ему две составляющие двумерного вектора, он даст вам угол вектора по оси x в направлении против часовой стрелки. Для того, чтобы решить конкретную проблему попробовать:

atan2(v_y, v_x) - atan2(u_y, u_x) 

Затем вы можете добавить или вычесть 360 градусов, если ответ из диапазона углов вы хотите.

+3

Просто помните, что atan2() обычно дает результат в диапазоне (-pi, pi], поэтому, если он отрицательный, вам нужно сначала добавить к нему 2pi (в случае, когда один угол больше 0 и другой менее 0.) – user1118321

+0

thx, это именно то, что я искал – user1602687

Смежные вопросы