Угол между двумя линиями начинается в одной точке - PullRequest
0 голосов
/ 01 сентября 2010

Допустим, я являюсь любыми двумя точками на 2d плоскости (p1 (x1, y1), p2 (x2, y1)), и обе точки образуют линию с центром (c (c1, c2)).Поэтому у меня две линии заканчиваются в одной точке.Я хочу знать, как я могу рассчитать угол между этими двумя линиями.Я хочу, чтобы иметь возможность показывать диапазон углов от 0-2pi.Также 0 - (- 2pi), которые позволяют линии сформироваться из p1 и c в строку 1 и в другую строку 2. У меня есть некоторая идея с использованием atan2 (), но не получилось так, как я хочу.Спасибо

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Преобразуйте точки в векторы (вычтите центральную точку из каждой конечной точки) и используйте точечное произведение для вычисления угла.

0 голосов
/ 01 сентября 2010

Найти дельта-векторы между центром и вашими двумя точками

d1 = p1-c;
d2 = p2-c;

Вы можете использовать atan2, чтобы получить угол каждого из них:

angle1 = atan2(d1.Y, d1.X)
angle2 = atan2(d2.Y, d2.X)

и ваш желаемый уголпросто разница:

a = angle2-angle1;

В зависимости от того, хотите ли вы представить угол в диапазоне от 0 до 2pi или от -2pi до 0, вы можете просто использовать цикл while, чтобы продолжать вычитать 2pi / добавляя 2pi кполучить представление, которое вы хотите, хотя вам нужно делать это только при представлении ракурса человеку

...