Stack Overflow на русском Asked by Dyno Cris on December 14, 2021
Известны две точки прямой, например, {100, 100} и {200, 200}, и есть точка, не лежащая на прямой, например {200, 100}. Как определить, в какой точке относительно прямой будет перпендикуляр, если провести линию? Желателен ответ в коде Java.
Для начала нужно найти уравнение прямой, к которой требуется провести перпендикуляр:
В вашем случае оно простое: y = 1x + 0
(прямая y = ax + b
)
Далее уравнение перпендикуляра к прямой через точку M(x1; y1)
можно найти так:
Упрощаем и получаем y = -x + 300
Решаем систему уравнений, чтобы найти точку пересечения прямых:
y = -x + 300
y = x
x = -x + 300
x = 150
y = 150
Answered by nomnoms12 on December 14, 2021
В общем виде - вот:
double x1 = 100, y1 = 100, x2 = 200, y2 = 200, x3 = 200, y3 = 100;
double x = (x1 * x1 * x3 - 2 * x1 * x2 * x3 + x2 * x2 * x3 + x2 *
(y1 - y2) * (y1 - y3) - x1 * (y1 - y2) * (y2 - y3)) / ((x1 - x2) *
(x1 - x2) + (y1 - y2) * (y1 - y2));
double y = (x2 * x2 * y1 + x1 * x1 * y2 + x2 * x3 * (y2 - y1) - x1 *
(x3 * (y2 - y1) + x2 * (y1 + y2)) + (y1 - y2) * (y1 - y2) * y3) / ((
x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
Такой ответ устраивает? Упростите уж сами, ладно?...
Update
Раз желание узнать КАК прозвучало... Все просто.
Ищем точку (x,y), которая лежит на прямой через точки (x1,y1) и (x2,y2), и прямая через точки (x,y) и (x3,y3) перпендикулярна прямой через точки (x1,y1) и (x2,y2).
Первое условие -
Ну, а второе - произведение наклонов должно давать -1 (Уравнение прямой - y = kx + b, и для перпендикулярных прямых k1*k2 = -1):
А дальше просто решаем эту систему уравнений...
Answered by Harry on December 14, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP