Как вычислить нормальный вектор отрезка?
предположим,что у меня есть отрезок линии,идущий от (x1, y1) до (x2, y2). Как вычислить нормальный вектор, перпендикулярный линии?
Я могу найти много вещей о том, чтобы делать это для самолетов в 3D, но не 2D.
пожалуйста, полегче с математикой (ссылки на отработанные примеры, диаграммы или алгоритмы приветствуются), я программист больше, чем математик;)
4 ответа:
Если мы определим dx=x2-x1 и dy=y2-y1, то нормали будут (- dy, dx) и (dy, - dx).
обратите внимание, что деление не требуется, и поэтому вы не рискуете делением на ноль.
матричное представление общего 2D преобразования выглядит следующим образом:
x' = x cos(t) - y sin(t) y' = x sin(t) + y cos(t)
где (x, y) - компоненты исходного вектора и (x', y') - преобразованные компоненты.
Если t = 90 градусов, то cos(90) = 0 и sin(90) = 1. Подстановка и умножение его дает:
x' = -y y' = +x
тот же результат, что и ранее, но с немного большим объяснением того, откуда он берется.
этот вопрос был размещен давно, но я нашел альтернативный способ ответить на него. Поэтому я решил поделиться им здесь.
Во-первых, надо знать, что: если два вектора перпендикулярны, то их скалярное произведение равно нулю.
Нормальный вектор(x',y')
перпендикулярно линии, соединяющей(x1,y1)
и(x2,y2)
. Эта линия имеет направление(x2-x1,y2-y1)
или(dx,dy)
.
Итак,(x',y').(dx,dy) = 0 x'.dx + y'.dy = 0
множество пар (x', y'), которые удовлетворяют приведенному выше уравнению. Но самое лучшее пара, которая всегда удовлетворяет либо
(dy,-dx)
или(-dy,dx)