Как найти координаты точки, которая образует прямой угол с отрезком?

Есть координаты двух точек 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))
→ Ссылка