Форум: "Игры";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизGLScene Как найти минимальное расстояние от точки до прямой ? Найти похожие ветки
← →
VectorGeometry (2005-03-23 04:24) [0]( Прямая задана двумя точками. ) Ведь наверняка есть какие то функции там.
← →
ViK © (2005-03-23 06:53) [1]// Возвращает точку пересечения прямой и перпендикуляра,
// проходящий через заданную точку, в 2D пространстве
void GetPerpendic(float x1, float y1, float x2, float y2, float dx, float dy, float &x, float &y)
//x1,y1,x2,y2 - координыты концов прямой
//dx,dy - заданная точка
//x,y - точка пересечения
{
float k1,k2,b1,b2;
vpVector2f v;
v(x2-x1,y2-y1);
if (v.x == 0.0 || v.y == 0.0) return;
k1=v.y/v.x; b1=y1-k1*x1;
k2=-1/k1; b2=dy-k2*dx;
x=(b2-b1)/(k1-k2); y=k1*x+b1;
};
Код хоть и корявый зато работает
Перевести на Делфи думаю не сложно
← →
VectorGeometry (2005-03-23 06:58) [2]
> ViK © (23.03.05 06:53) [1]
Чё за язык-то такой странный ? Китайский чтоли ?
Нельзя-ли это как нибудь по-русски ? А то боюсь, ошибиться с переводом.
← →
Xeno © (2005-03-23 07:24) [3]это он на С тебе написал похоже :-)))
← →
VectorGeometry (2005-03-23 07:33) [4]
> Xeno © (23.03.05 07:24) [3]
> это он на С тебе написал похоже :-)))
На Си льник.
← →
Думкин © (2005-03-23 07:35) [5]> //x1,y1,x2,y2 - координыты концов прямой
Прям откровение - конец прямой. Формула есть:
d(P(x0,y0,z0)) = abs(A*x0+B*y0+C*z0+D)/sqrt(sqr(A)+sqr(B)+sqr(C))
прямая задана Ax+By+Cz+D=0 P(x0,y0,z0) - твоя точка.
Вроде не наврал - по памяти - сейчас проверюсь.
← →
MBo © (2005-03-23 13:13) [6]>Думкин
это у тебя для плоскости.
← →
Думкин © (2005-03-23 13:34) [7]> [6] MBo © (23.03.05 13:13)
Точно. Для гиперповерхности. То есть для двумерного катит, а в трехмерке нет.
Но.. что нам стоит дом построить? Счас.
← →
A22 © (2005-03-23 13:35) [8]2 VectorGeometry
такие вопросы лучше всего задавать математическому справочнику или Гуглу...
а еще лучше - голове!
← →
Думкин © (2005-03-23 13:48) [9]В общем я бы без Гугля так пошел вначале(может и получше что потом найду):
1. Считаем что прямая задана одной точкой X и вектором N.
2. И дана точка Y
3. Есть вектор XY и N. Находим векторное - K
4. Далее находим векторное K и N. Это M.
5. собственно надо теперь уравнение плоскости с нормалью M и проходящую через X. A,B,C - это ясно координаты M. Найти D предоставляю автору.
6. Используем приведенную мной формулу.
Другое.
1. Точки на прямой имеют вид (Xx+Nx*t,Xy+Ny*t,Xz+Nz*t)
2. Берем ближайшую точку и выписываем условие ближайшести. Либо производную, либо ортогоноальность к ... ну ясно. уравнение одинаковое в итоге для t.
3. Находим t. Соответственно точку - считаем расстояние.
Другое.
http://www.yandex.ru/yandsearch?rpt=rad&text=%D0%E0%F1%F1%F2%EE%FF%ED%E8%E5+%EE%F2+%F2%EE%F7%EA%E8+%E4%EE+%EF%F0%FF%EC%E E%E9
Первая же ссылка приводит куда надо.
← →
Думкин © (2005-03-23 13:55) [10]Да, можно проще если подумать:
http://algolist.manual.ru/maths/geom/distance/pointline.php
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c