Провести прямую (а не отрезок) через заданные точки - Pascal ABC

Формулировка задачи:

Дан отрезок с координатами (x1,x2);(x2,y2). Как провести через эти точки прямую на все окно?(а не только отрезок прямой)

Код к задаче: «Провести прямую (а не отрезок) через заданные точки - Pascal ABC»

textual
uses graphABC;
var x1,y1,x2,y2:integer;
    k,x,y,c:real;
begin
repeat
writeln('Введите координаты первой точки от 50 до 450:');
readln(x1,y1);
until(x1>=50)and(x1<=450)and(y1>=50)and(y1<=450);
repeat
writeln('Введите координаты второй точки от 50 до 450:');
readln(x2,y2);
until(x2>=50)and(x2<=450)and(y2>=50)and(y2<=450)and((x1<>x2)or(y1<>y2));
setwindowsize(500,500);
centerwindow;
setpencolor(clRed);
setbrushcolor(clRed);
circle(x1,y1,3);
circle(x2,y2,3);
setbrushstyle(bsClear);
setfontsize(12);
textout(x1+10,y1-15,'A');
textout(x2+10,y2-15,'B');
// вертикальная
setpencolor(clBlue);
if x1=x2 then
 begin
  x:=x1;
  y:=0;
  while y<windowheight do
   begin
    if y=0 then moveto(round(x),round(y))
    else lineto(round(x),round(y));
    y:=y+0.1;
   end
 end
//горизонтальная
else if y1=y2 then
 begin
  x:=0;
  y:=y1;
  while x<windowwidth do
   begin
    if x=0 then moveto(round(x),round(y))
    else lineto(round(x),round(y));
    x:=x+0.1;
   end
 end
//наклонные
else
 begin
  x:=0;
  k:=(y1-y2)/(x2-x1);
  c:=y2+x2*k;
  while x<=windowwidth do
   begin
    y:=-round((k*x-c));
    if x=0 then moveto(round(x),round(y))
    else lineto(round(x),round(y));
    x:=x+1;
   end;
 end;
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

8   голосов, оценка 3.875 из 5


СДЕЛАЙТЕ РЕПОСТ