Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [геометрия] прямая и перпендикуляр |
Автор: Artemon 18.3.2008, 13:00 |
есть прямая, заданная координатами (Ax,Ay), (Bx,By) Как получить координаты точки, находящейся на расстоянии L от этой прямой. И если провести прямую через точки [(Ax,Ay), (Искомая точка)], то эта прямая будет перпендикуляром к исходной прямой. Жесть. |
Автор: Sardar 18.3.2008, 13:38 | ||
|
Автор: v2v 18.3.2008, 13:58 | ||
ух закрутил ![]() ты подразумевал что на расстоянии Л относительно нашей прямой будет ещё одна прямая , а не точка?) |
Автор: maxim1000 18.3.2008, 14:14 | ||||
думаю, здесь просто небольшая неточность в условии:
перед "И" должна быть запятая, а не точка тогда здесь описываются два условия, которым должны удовлетворять решения |
Автор: Artemon 18.3.2008, 19:05 |
Следуя примеру, который дал Sardar, я попробовал теорию на практике: Ax = 1, Ay = 1 Bx = 3, By = 3 L = 1 a = (3-1) / (3-1) = 1; b = 1; // Попробовал в уравнение прямой подставил единичку: f(x) = 1*1+1 //f(x) = a*x + b; // Не сраслось, получается что при x = 1, y = 2, а у нас на прямой такой точки нет. ang = (atan(а) [+-] pi/2) - направление, крутим в обе стороны // Не пойму в каких случаях ставить -, а в каких + ? Допустим попробовали с плюсом: ang = atan(1)+3.14/2 = 0.785398163+1.57=2.35539816 // Надеюсь google правильно посчитал ![]() u = cos(ang)*L; v = sin(ang)*L; u = cos(2.35539816)*1 = -0.706543467 v= sin(2.35539816)*1 = 0.707669647 f(x + u) = f(x) + v; - сдвинутая в сторону на L точка, на прямой перпендикулярной f(x) f(1+-0.706543467) = f(1)+v // Здесь равенство сошлось Но что-то я не пойму, а где координаты этой точки? |
Автор: cardinal 18.3.2008, 20:28 | ||
Две прямых. |
Автор: Artemon 18.3.2008, 21:22 | ||
|
Автор: Sardar 18.3.2008, 22:08 | ||
(Ax, Ay) взяли за базу (origin), от него и считай (т.е. (x-Ax)) Представь вертикальную прямую, от неё можно отложить перпендикулярный отрезок длинной L в обе стороны, ты не указал в какую, я привёл обе. Если (x, y) точка на исходной прямой, то (x+u, y+v) - искомая (сдвинутая) точка. |
Автор: inside_pointer 19.3.2008, 09:49 | ||
Bx - Ax = ? (расстояние между абсциссами) By - Ay = ? (расстояние между ординатами) { X1x - Ax = L { X2x - X1x = (расстояние между абсциссами) { X1y - Ay = L { X2y - X1y = (расстояние между ординатами) В итоге у тебя { X2x = (расстояние между абсциссами) + L + Ax { X2y = (расстояние между ординатами) + L + Ay Видимо точка с координатами (X1x, X1y) выражается через Bx, By |
Автор: Artemon 19.3.2008, 10:32 | ||
А если прямая идет не вертикально, а по наклону, проходя через [0,0], [3,3] Тогда как знак определить? Есть способ по которому можно однозначно определить знак? |
Автор: shurik_catfish 21.3.2008, 12:46 |
Пусть (Lx,Ly) искомая точка тогда расстояние от точки а до этой точки будет L^2=(Ax-Lx)^2+(Ay-Ly)^2 (1) С дроугой стороны так как расстоянием от данной точки до прямой называеться длина перпендикуляра то: скалярно AB*AL должнго быть =0 тоесть (Bx-Ax)*(Lx-Ax)+(By-Ay)*(Ly-Ay)=0 (2) (Если Ax,Ay и Bx,By концы вектора то его координаты находяться как разность Bx-Ax , By-Ay или Ax-Bx , Ay-By зависит от енго направления) Таким образом решая систему уравнений (1)и(2) и находим координаты точки (Lx,Ly)... |