Найдите конечную точку, созданную под углом 90°

#math #geometry #computational-geometry

Вопрос:

Я действительно не знаю, возможно ли это, но есть ли способ найти точки A и B на изображении ниже?

Пример 1

Итак, как я могу найти координаты A и B, если я знаю координаты точки P, и я знаю, что PA должен образовывать угол 90 градусов.

Вот еще один пример, который, возможно, поможет вам понять, чего я хочу достичь.

Пример 2

Комментарии:

1. Что ты пробовал? Какой язык программирования вы используете? Кроме того, как определяется ваш прямоугольник? Является O ли происхождение вашего векторного пространства? Он всегда находится в центре прямоугольника? P Всегда ли он внутри? … ?

Ответ №1:

Вы снова не указали детали проблемы…

Хорошо, пусть начало координат-центр прямоугольника O , половина ширины — wh , половина высоты — hh

Таким образом, мы можем записать линейное уравнение в нормальной форме

 x * px/ro   y * py/ro - ro = 0
 or
x * px   y * py - squared_ro = 0
 where
ro = sqrt(px*px   py*py)
 

Теперь мы можем подставить координаты сторон прямоугольника в это уравнение и найти пересечения

 wh * px   y * py - squared_ro = 0  //to get y-coordinate of intersection with right side 
-wh * px   y * py - squared_ro = 0 //y for left side   
x * px   hh * py - squared_ro = 0  //x for top side 
x * px - hh * py - squared_ro = 0   //x for bottom side
 

отфильтруйте результаты, где abs(x)> wh или abs(y) > hh , и вы получите две точки пересечения