#math #geometry #computational-geometry
Вопрос:
Я действительно не знаю, возможно ли это, но есть ли способ найти точки A и B на изображении ниже?
Итак, как я могу найти координаты A и B, если я знаю координаты точки P, и я знаю, что PA должен образовывать угол 90 градусов.
Вот еще один пример, который, возможно, поможет вам понять, чего я хочу достичь.
Комментарии:
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
, и вы получите две точки пересечения