Расстояние между точкой и отрезком.
Расстояние от точки до прямой на плоскости определяется как длина отрезка перпендикуляра, опущенного из точки на прямую. Оно равно:
Для определения расстояния между точкой и отрезком необходимо определить, пересекает ли перпендикуляр, опущенный из точки на прямую, проходящую через концы отрезка, отрезок. Если да, то расстояние находится по формуле, определяющей расстояние от точки до прямой. Если перпендикуляр не пересекает отрезок, то расстояние равно минимальному из расстояний между точкой и одним из концов отрезка.
Для определения пересекает ли перпендикуляр отрезок, поступим следующим образом: рассмотрим треугольник, образованный тремя точками (две точки - концы отрезка, третья точка - искомая точка).
Рис 3.4.
Очевидно, если перпендикуляр пересекает отрезок, то углы при основании треугольника должны быть острыми, а если перпендикуляр не пересекает отрезок, то один из углов при основании тупой. Условием наличия тупого угла является:
a2 > b2 + c2 или b2 > a2 + c2,
где с - длина основания (длина отрезка), a и b расстояния от точки до концов отрезка.
Таким образом, если условие не выполняется, то расстояние вычисляется по формуле расстояния от точки до прямой. Если это условие выполняется, то берется минимальное из значений a или b.
Задание
1. Напишите программу, которая определяет имеют ли отрезки общие точки (точки пересечений). Отрезки заданы координатами своих концов.
2. Напишите программу, которая определяет кратчайшее расстояние от точки до отрезка. Отрезок задан координатами своих концов. Для нахождения расстояния можно использовать следующую функцию:
function Dlina(x1,y1,x2,y2: real):real;
begin
Dlina:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
Достарыңызбен бөлісу: |