Проекция точки на прямую



Дана прямая и точка в трёхмерном пространстве
Найти такую точку на прямой, чтобы расстояние до неё от данной было минимально

Построим треугольник: две точки на прямой и данная точка. Опустим высоту. Найдём расстояния отрезков, отсекаемых высотой. И разделим основание в отношении этих отрезков.


Листинг C++

gpoint closest_point (gline l, gpoint p)
{
    gpoint A = l.p;
    gpoint B = add_vector (A, l.v, 1);
    double Ap = dist (A, p);
    double Bp = dist (B, p);
    double AB = dist (A, B);
    double At = (sqr (Ap) - sqr (Bp) + sqr (AB)) / (2 * AB);
    double Bt = AB - At;
    return part_segment (A, B, At, Bt);
}

23:59
12.12.09


По всем вопросам обращаться: rumterg@gmail.com