Как я вычисляю вектор нормали линейного сегмента?

Летающие автомобили и ховерборды. О, ожидайте, те еще не были изобретены. Но к 2015, у нас должны быть они. Иначе Назад в будущее 2 будет большой ложью!

168
задан Piku 7 August 2009 в 08:35
поделиться

3 ответа

если мы определим dx = x2-x1 и dy = y2-y1, то нормали будут (-dy, dx) и (dy, -dx).

Обратите внимание, что нет деления является обязательным, поэтому вы не рискуете делить на ноль.

225
ответ дан 23 November 2019 в 20:55
поделиться
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 - это что-то, если вы хотите передать его из точки, которую вы определили

7
ответ дан 23 November 2019 в 20:55
поделиться

Другой способ представить это - вычислить единичный вектор для данного направления, а затем применить поворот на 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

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

89
ответ дан 23 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: