Текущий архив: 2005.07.31;
Скачать: CL | DM;
ВнизОпять геометрия Найти похожие ветки
← →
VolanD666 (2005-04-11 14:27) [0]Привет, программеры. Кто знает, как найти расстояние от точки до ОТРЕЗКА?
← →
A22 © (2005-04-11 14:47) [1]отрезок - это множество мощности континуум. тебе до какой точки из бесконечного числа возможных расстояние считать? или тебе кратчайшее - перпендикуляр?
← →
VolanD666 (2005-04-11 15:25) [2]Не...Мне надо посчитать, учитывая что отрезок конечный.
← →
A22 © (2005-04-11 15:34) [3]строй по концам отрезка прямую, ищи перпендикуляр. если он вне отрезка - бери тот конец отрезка, что ближе к точке пересечения перпендикуляра с прямой
← →
VolanD666 (2005-04-11 16:11) [4]А как узнать, вне отрезка или нет?
← →
A22 © (2005-04-11 16:49) [5]p = a*(1-t) + b*t
a & t - концы отрезка, p - точка, лежащаю внутри отрезка при t [0,1]. подставляешь значения, считаешь t. если < 0 или > 1 - значит вышли за границы отрезка. соотв. если < 0 - бери за ближайшую точку a, если > 1 - b, иначе - p. а расстоянием от твоей начальной точки P до отрезка будет длина вектора P-P"
(где P" как раз a,b или p)
← →
A22 © (2005-04-11 16:50) [6]блин, a и b - концы отрезка, t - коэффициент. очепятался в самом начале, извиняюсь
← →
VolanD666 (2005-04-11 18:18) [7]Ага, спасибо :-)
← →
Sapersky (2005-04-11 18:33) [8]На будущее -
http://www.geometryalgorithms.com/algorithm_archive.htm
← →
VolanD666 (2005-04-11 19:00) [9]
> p - точка, лежащаю внутри отрезка
Тогда, как понять p = a*(1-t) + b*t;
← →
Перпендикуляр (2005-04-12 02:43) [10]Скажите, а по какой формуле находится перпендикулят точки на отрезок ? В 3D. Желательно в GLScene ?
← →
VolanD666 (2005-04-12 16:10) [11]Можно найти его формулу:
(y-y1)=(-1/a)*(x-x1);
x1,y1- координаты точки
а- берется из уравнения прямой(y=ax+b)
← →
VolanD666 (2005-04-12 18:38) [12]Стоп! Я так с этим уравнением не понял (p = a*(1-t) + b*t).
Пусть есть отрезок (x1,y1,x2,y2). И точка p(px1,px2). Тгда как будет выглядеть это уравнение?
← →
Pa5ha (2005-04-12 20:04) [13]Короче. Была у нас аналка (аналитическая геометрия то бишь) в первом семестре. Там все это было. Я даже сам удивлялся. Так что студенты первокурсники Тебе помогут. А я уже сдал и забыл. =)
← →
Перпендикуляр (2005-04-13 02:18) [14]
> Pa5ha (12.04.05 20:04) [13]
> Короче. Была у нас аналка (аналитическая геометрия то бишь)
> в первом семестре. Там все это было. Я даже сам удивлялся.
> Так что студенты первокурсники Тебе помогут. А я уже сдал
> и забыл. =)
Вот и я забыл. Ищу того, ко найдёт перпендикуляр из точки на прямую !
← →
XProger © (2005-04-13 14:40) [15]Расстояние от точки M до отрезка AB
var
AM, BM : TPoint;
Rast : single;
AX, BX : integer;
begin
AM.X := A.X - M.X;
AM.Y := A.Y - M.Y;
BM.X := B.X - M.X;
BM.Y := B.Y - M.Y;
AX := sqr(AM.X) + sqr(AM.Y);
BX := sqr(BM.X) + sqr(BM.Y);
Rast := sqr(B.X - A.X) + sqr(B.Y - A.Y);
if not((AX + Rast > BX) and (BX + Rast > AX)) then
begin
за пределами отрезка;
Rast := -1;
end
else
if Rast = 0 then
на отрезке;
else
Rast := abs((AM.X*BM.Y - AM.Y*BM.X)/sqrt(Rast));
end;
← →
Перпендикуляр (2005-04-14 01:33) [16]
> XProger © (13.04.05 14:40) [15]
> Расстояние от точки M до отрезка AB
А перпендикуляр ?
← →
VolanD666 (2005-04-14 18:32) [17]Я ведь написал:
1) Составить уравнение прямой (для которой нужен перпендикуляр):
A*x+B*y+C=0
A=(p2.y-p1.y);
B=-(p2.x-p1.x);
C=(p2.x-p1.x)*p1.y-(p2.y-p1.y)*p1.x;
p1,p2- точки через которые проходит прямая.
2) Составить уравнение перпендикуляра:
A*(y-y1)-B*(x-x1)=0;
← →
XProger © (2005-04-14 23:07) [18]Перпендикуляр, расстояние это и есть перпендикуляр!
Но для отрезка его просто может не быть!
← →
Перпендикуляр (2005-04-15 01:19) [19]
> 2) Составить уравнение перпендикуляра:
> A*(y-y1)-B*(x-x1)=0;
А что такое x, x1, y, y1 ?
И как их из этого уравнения можно найти 7
> XProger © (14.04.05 23:07) [18]
> Перпендикуляр, расстояние это и есть перпендикуляр!
Нет. Нужна точка пересечения линии, и перпендикуляра опущенного на неё с прямой.
> Но для отрезка его просто может не быть!
Тогда надо это указать.
← →
VolanD666 (2005-04-15 12:36) [20]
> Нет. Нужна точка пересечения линии, и перпендикуляра опущенного
> на неё с прямой.
Решаем систему уравнений:
A*x+B*y+C=0
A*(y-y1)-B*(x-x1)=0;
(x1,y1- координаты точки через которую проходит перпендикуляр)
← →
XProger © (2005-04-15 13:14) [21]Перпендикуляр,
Читай внимательно первый ПОСТ!!!
И мой ответ с комментами!
if not((AX + Rast > BX) and (BX + Rast > AX)) then
begin
за пределами отрезка;
Rast := -1; <<< НЕТ ПЕРМЕНДИКУЛЯРА! ПОНЯТНО?
end
else
if Rast = 0 then
на отрезке; <<< ПОНЯЛ???
else
Rast := abs((AM.X*BM.Y - AM.Y*BM.X)/sqrt(Rast));
← →
Перпендикуляр (2005-04-16 01:32) [22]
> XProger © (15.04.05 13:14) [21]
> <<< ПОНЯЛ???
Надо в 3D.
← →
XProger © (2005-04-16 03:22) [23]Перпендикуляр, от этого расстояние изменится? ;) Просто в уравнении прямой появистся ещё одна часть (z - z1)/(z2 - z1) Что к чему надеюсь понятно...
Страницы: 1 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.038 c