Летающие автомобили и ховерборды. О, ожидайте, те еще не были изобретены. Но к 2015, у нас должны быть они. Иначе Назад в будущее 2 будет большой ложью!
если мы определим dx = x2-x1 и dy = y2-y1, то нормали будут (-dy, dx) и (dy, -dx).
Обратите внимание, что нет деления является обязательным, поэтому вы не рискуете делить на ноль.
m1 = (y2 - y1) / (x2 - x1)
если две перпендикулярные линии:
m1*m2 = -1
, то
m2 = -1 / m1 //if (m1 == 0, then your line should have an equation like x = b)
y = m2*x + b //b is offset of new perpendicular line..
b - это что-то, если вы хотите передать его из точки, которую вы определили
Другой способ представить это - вычислить единичный вектор для данного направления, а затем применить поворот на 90 градусов против часовой стрелки, чтобы получить вектор нормали.
Матричное представление общего 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
Тот же результат, что и приведенный ранее, но с небольшими дополнительными пояснениями относительно его происхождения.