Pers.narod.ru. Алгоритмы. Минимум расстояния от точки на оси абсцисс до концов отрезка |
Даны две точки с координатами (Х1, Y1) и (X2, Y2), при этом Х1 не равно Х2. Найти такую точку на оси абсцисс (X), что сумма расстояний от неё до точек (Х1, Y1) и (X2, Y2) будет наименьшей. Такая задача, как и предыдущая, довольно часто решается в компьютерной графике.

var x,y:array [1..2] of real;
a,c:real;
i:integer;
begin
{Ввод данных}
writeln;
for i:=1 to 2 do begin
repeat
write ('Введите точку ',i,' (координаты X и Y):');
{$I-}readln (x[i],y[i]);{$I+}
until IoResult=0;
end;
{Реализация алгоритма и вывод результатов}
if y[1]=0 then
if y[2]=0 then writeln ('Все точки отрезка')
else writeln ('Точка X1=',x[1]:6:2)
else if y[2]=0 then writeln ('Точка X2=',x[2]:6:2)
else begin
if y[1]*y[2]>=0 then y[1]:=-y[1];
a:=y[2]-y[1];
c:=-x[1]*(y[2]-y[1])+y[1]*(x[2]-x[1]);
writeln ('Точка X=',(-c/a):6:2)
end;
reset (input); readln;
end.
|
|