Расстояние от точки до луча
Дана точка и луч
Необходимо найти кратчайшее из расстояние от заданной точки до какой-либо точки, принадлежащей лучу
Если точка составляет с лучом угол больше 90 градусов, то искомым будет расстояние от точки до начала луча, иначе искомым будет расстояние от точки до прямой на которой лежит луч.
Листинг C++
double dist_point_to_ray (point p, point p1, point p2)
{
// проектируем точку на прямую, проходящую по лучу
line l = toline (p1, p2);
point t = closest_point (l, p);
// если полученная точка принадлежит лучу, то возвращаем расстояние до прямой
if (point_in_ray (t, p1, p2))
return dist (p, t);
// иначе возвращаем расстояние до начала луча
return dist (p, p1);
}
13:18
20.07.2009
По всем вопросам обращаться: rumterg@gmail.com