Нужен алгоритм для угла линии WPF - PullRequest
1 голос
/ 22 февраля 2011

Что такое «правильный» алгоритм для вычисления угла в градусах от линии WPF?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

Вам нужно atan2. Однако это даст вам угол в радианах, преобразование в градусы должно быть простым :-) Угол рассчитывается как atan2(y2 - y1, x2 - x1), где (x1, y1) и (x2, y2) - концы вашей линии.

Обратите внимание, что константа pi также доступна .

2 голосов
/ 22 февраля 2011

Для преобразования в градусы вы можете использовать множитель (180 градусов / радиан Math.PI). Этот коэффициент преобразования получается, если заметить, что радианы Math.PI эквивалентны 180 градусам. Таким образом, если theta1 находится в радианах, то theta2 = theta1 * (180 / Math.PI) будет эквивалентно theta1, за исключением того, что у него будет единица градусов.

Чтобы рассчитать угол линии, вы должны использовать стандартную формулу для касательной из тригонометрии, а затем взять арктангенс обеих сторон, чтобы получить тета

tan (theta) = противоположный / соседний -> theta = arctangent (противоположный / соседний)

Это можно применить к вашей линии, сформировав соответствующий треугольник. Для этого выберите любые две точки на линии (x1, y1) и (x2, y2). Затем вы можете сформировать уникальный прямоугольный треугольник с гипотенузой, представляющей собой отрезок прямой между (x1, y1) и (x2, y2), противоположная сторона которой представляет собой отрезок вертикальной линии длины (y2 - y1), а соседняя сторона - горизонтальную. отрезок длины (x2 - x1).

Вы можете рассчитать значение тета, вычислив

Double theta = (180/Math.PI) * Math.Atan2(opposite, adjacent);

Функция автоматически позаботится о случае, когда смежность равна нулю (что обычно приводит к ошибке деления на ноль), и вернет наиболее подходящий угол (90 градусов или -90 градусов), за исключением случая, когда оба противоположны и смежные ноль. В этом случае тэта равен нулю, что не имеет особого смысла. В этом случае действительно должно быть исключение, поскольку математически невозможно определить угол треугольника с гипотенузой нулевой длины.

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