TransWikia.com

Как вычислить перпендикуляр к прямой?

Stack Overflow на русском Asked by Dyno Cris on December 14, 2021

Известны две точки прямой, например, {100, 100} и {200, 200}, и есть точка, не лежащая на прямой, например {200, 100}. Как определить, в какой точке относительно прямой будет перпендикуляр, если провести линию? Желателен ответ в коде Java.

введите сюда описание изображения

2 Answers

Для начала нужно найти уравнение прямой, к которой требуется провести перпендикуляр:

Уравнение прямой по двум точкам

В вашем случае оно простое: 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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP