Как найти координаты точки, которая образует прямой угол с отрезком?
Есть координаты двух точек A, B. Можно ли найти координаты точки С, при заданной длинне отрезка АС, чтобы он образовал прямой угол с AB?
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Находим единичный вектор направления, затем единичный вектор нормали, затем вычисляем точки на нужном расстоянии.
Результат - две точки. Если нужна только одна точка из p1,p2 ("левая" или "правая"), то можно оставить только её вычисление
import math
def normaloflen(ax, ay, bx, by, dist):
diffx = bx - ax
diffy = by - ay
leng = math.hypot(diffx, diffy)
udx = diffx / leng
udy = diffy / leng
normx = -udy
normy = udx
p1 = ax + dist * normx, ay + dist * normy
p2 = ax - dist * normx, ay - dist * normy
return p1, p2
print(normaloflen(0, 0, 0, 3, 2))
print(normaloflen(2, 0, 0, 2, 1.41421356237))
Вывод (обрезал для краткости):
>>> ((-2.0, 0.0), (2.0, 0.0))
>>> ((1.000, -0.999999), (2.99999, 0.99999))