Тригонометрия: как найти перпендикуляр от точки в прямой
Ребята такой вопрос простой вопрос по тригонометрии
Как найти перпендикуляр от точки в прямой
есть вектор v`(x,y,z) — направление прямой
есть точка t(xt,yt,zt)
нужно найти точку пересечения прямой проходящей через данную точку и прямую прямые ортогональны
#1
13:08, 10 апр 2006
Про тригонометрию лучшеб ты не вспоминал, это аналлитическая геометрия.
Задай почеловечески вопрос а то вообще не понял что откуда и куда пересекаеться.
#2
13:13, 10 апр 2006
могу подсказать только длину перпендикуляра, если прямая задана двумя точками.
#3
13:36, 10 апр 2006
stim24
Напиши всё это вразумительно — может что и подскажем. А то математику на албанском я не понимаю.
#4
14:04, 10 апр 2006
вообщем пусть есть ландшафт
я мышкой задаю направление вектора (вектор идет от места положения камеры и проходит через точку проекции указанной мышкой на мониторе)
нужно определить какую точку(вершину) из ландшафта я выбрал т.к. точно на нее попасть практически не возможно нужно определить саму близ лежащию точку до места положения камеры и самое маленькое расстояние от точки до прямой проходящей через указанный вектор. расстояние найти не проблемма))). Как извесно самое минимальное расстояние
от точки до прямой это перпендикулял опщенный на прямую из данной точки. вот и хочу найти это расстояние перпендикуляра
mbait
скажи
#5
14:05, 10 апр 2006
Однозначно определить не получится. Перпендикуляр к прямой в 3D пространстве — это плоскость. Задача решается только на плоскости.
если прямая определена y = k1x+b1, то препендикулярная ей прямая (y = k2x + b2) будет иметь k2=-1/k1.
Если прямая проходит через точку (x0, y0), то
b2 = y0 — (k2*x0), т.е. окончательное уравнение результирующей прямой:
y = (-1/k1)*x + y0 + (1/k1)*x0.
Это работает для не горизонтальных и не вертикальных прямых.
Можно через векторный анализ.
причем тут тригонометрия? (это аналитическая геометрия)
#6
14:10, 10 апр 2006
да я чето тут загнул с тригонометрией.. )))))))) бывает этож простительно
#7
14:15, 10 апр 2006
>>Однозначно определить не получится. Перпендикуляр к прямой в 3D пространстве — это плоскость.
это кто тебе сказал?
#8
14:17, 10 апр 2006
>>это кто тебе сказал?
Sorry. Тут я погоречился, бвыает 🙂
Если исходная прямая определна направляющей V(A, B, C), то перпендикулярная плоскость
Ax + By + Cz + D = 0.
D находится подставляя вместо x, y, z значения tx, ty, tz
D = -A*tx — B*ty — C*tz
далее ищется точка пересечения прямой и плоскости (система из 3-х уравшений (базовый курс линейки)).
решение допустим : tx1, tx2, tx3
Искомый вектор (tx — tx1, ty1 — ty, tz1 — tz).
#9
14:20, 10 апр 2006
#10
14:20, 10 апр 2006
. опечатка : Искомый вектор (tx1- tx, ty1 — ty, tz1 — tz).
#11
14:25, 10 апр 2006
HamWallet
>Перпендикуляр к прямой в 3D пространстве — это плоскость.
Врете батенька вам на повторный курс мат аналитики. Если точка не лежит на прямой то всегда можно опустить перпендикуляр.
void Vector3d::Projection(const Vector3d &NVector,const Vector3d &PVector) < float k,sq; sq=NVector.x*NVector.x + NVector.y*NVector.y + NVector.z*NVector.z; if( sq!=0 ) < k=(NVector.x*PVector.x + NVector.y*PVector.y + NVector.z*PVector.z)/sq; x=k*NVector.x; y=k*NVector.y; z=k*NVector.z; >else < x=0; y=0; z=0; >>
думаю определит вектор из точки к прямой сумееш?
#12
14:52, 10 апр 2006
>далее ищется точка пересечения прямой и плоскости (система из 3-х уравшений (базовый курс линейки)).
Оно конечно можно решать и через плоскости и перпендикуляры, но это фигня. В печку.
Цитирую одно из определений скалярного произведения:
«Скалярным произведением двух векторов назывется число, равное произведению длины одного их этих векторов на проекцию другого вектора на ось, определяемую первым из указанных векторов»:
если b — это направляющий вектор (в твоём случае вектор зрения) единичной длины, то вектор проекции произвольной точки а на ось зрения будет
s = b*dot(a,b);
Соответственно |a — s| расстояние между точкой а и её проекцией на ось зрения.
—
правка — попытался яснее выразить вторую строчку. )
Перпендикуляр из точки на прямую
Из данной точки A, лежащей вне данной прямой l, при помощи только лишь циркуля и линейки опустить перпендикуляр на прямую l:

При этом нужно выполнить построение, проведя не более трёх линий (третьей линией должна быть искомая прямая).
Сначала проводим окружность произвольного радиуса, проходящую через точку A, с центром в произвольной точке O, лежащей на прямой l:

Затем проводим ещё одну окружность произвольного радиуса, проходящую через точку A, с центром в произвольной точке O’, лежащей на прямой l, которая пересекает первую окружность в точке B:

Искомая прямая проходит через точки A и B:
Построение перпендикуляра к данной прямой из данной точки вне данной прямой
Построение перпендикуляра к данной прямой из данной точки вне этой прямой. Даны прямая a и точка B вне этой прямой. Требуется построить луч CB, начинающийся на прямой a, проходящий через точку B и перпендикулярный прямой a. Для этого произвольным раствором циркуля проводим первую вспомогательную дугу окружности с центром в точке B и пересекающую прямую a в двух точках — D и E. Теперь произвольным раствором циркуля проводим вторую вспомогательную дугу окружности с центром в точке D и тем же раствором циркуля проводим третью вспомогательную дугу окружности с центром в точке E — так, что третья дуга пересекает вторую в некоторой точке F. Теперь соединяем эту точку F и данную точку B прямой, пересекающей данную прямую. Получившуюся точку пересечения называю C. Луч CB — и есть требуемый перпендикуляр. И вот почему: рассмотрим два треугольника — BDF и BEF. В этих треугольниках стороны BD и BE равны (потому что их откладывали одним и тем же раствором циркуля), стороны FD и FE тоже равны (потому что их тоже откладывали одним и тем же раствором циркуля), а сторона BF — общая. Значит, треугольники равны по третьему признаку, а это значит, что соответственные углы FBD и FBE в них равны. Следовательно, в равнобедренном треугольнике DBE отрезок CB является биссектрисой, а значит и высотой, то есть перпендикуляром. Построение закончено.
Как вычислить перпендикуляр к прямой?

Известны две точки прямой, например, <100, 100>и , и есть точка, не лежащая на прямой, например . Как определить, в какой точке относительно прямой будет перпендикуляр, если провести линию? Желателен ответ в коде Java. 100,>
Отслеживать
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков
задан 23 июл 2020 в 15:24
157 1 1 серебряный знак 9 9 бронзовых знаков
23 июл 2020 в 18:54
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
В общем виде — вот:
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):

А дальше просто решаем эту систему уравнений.