2013-09-18 2 views
-1

У меня есть группа точек на изображении, и я хочу заказать их/получить свойства по часовой стрелке. Условием их упорядочения будет их угол.Изменить положение угла нуля atan2() или аналогичного

Мне нужно выбрать начальную точку с углом 0, а затем другие точки по часовой стрелке (увеличивающий угол). Тем не менее, я использую atan2 (2, потому что диапазон углов лучше), чтобы получить углы, но нулевой угол всегда находится на горизонтальной оси. Как установить ось нулевого угла в положение начальной точки?

Большое спасибо! Hector

ответ

2

Если рассчитать начальный угол:

double theta_0 = atan2(y[0], x[0]); 

, то вы можете вычесть это из последующих углов и использовать fmod, чтобы получить относительный угол по модулю 2л, и тем самым получить по часовой стрелке положительный угол относительно исходного угла :

double theta_i = fmod(atan2(y[i], x[i]) - theta_0, M_PI * 2.0); 
+0

Привет, большое спасибо за ваш ответ. Как я могу получить theta_i в рабочей области? Если я называю это двойным, оно не появляется. – user2788308

+0

Какая рабочая область? Вы на самом деле не упомянули, на каком языке программирования или среде вы работаете. –

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