Расстояние от точки до луча



Дана точка и луч
Необходимо найти кратчайшее из расстояние от заданной точки до какой-либо точки, принадлежащей лучу

    Если точка составляет с лучом угол больше 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