Вычислить точку, нормальную к прямой - PullRequest
3 голосов
/ 07 марта 2011

У меня есть строка L, заданная (x1, y1) (x2, y2), и я хочу вычислить координаты точки, которая:

  • находится на нормали, которая пересекает L на половине его длины
  • это определенное расстояние D от L

Примеры:

  • Если линия (x1, a) (x2, a) (горизонтальная), координаты расчетная точка будет ((x2-x1) / 2, D).
  • Если линия (a, y1) (a, y2) (вертикальная), координаты рассчитанного точка будет (D, (y2-y1) / 2).

Но я не знаю, как вычислить координаты для всех линии независимо от угла (от -Пи до Пи).

Заранее спасибо!

1 Ответ

8 голосов
/ 07 марта 2011

Центр между обеими точками задается как

((x1+x2)/2, (y1+y2)/2)

в то время как (ненормализованное) нормальное значение

(-(y2-y1), (x2-x1))

Если мы нормализуем этот вектор, мы получим

(-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)

и если мы объединяем оба, мы находим две точки

((x1+x2)/2, (y1+y2)/2) +- D * (-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)

, которые оба отвечают вашим требованиям.

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