Nickolay.info. Алгоритмы. Минимум расстояния от точки на оси абсцисс до концов отрезка

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

Минимум расстояния от точки на оси X до концов отрезка
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.

Рейтинг@Mail.ru

вверх гостевая; E-mail