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

Узнай цену своей работы

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

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

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

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.

Объяснение кода листинга программы

  1. Используется библиотека graphABC.
  2. Задаются две точки с координатами x1, y1 и x2, y2.
  3. Устанавливается размер окна приложения.
  4. Выбирается цвет кисти и фона.
  5. Рисуются окружности с координатами x1, y1 и x2, y2.
  6. Выводится текст A и B с координатами x1, y1 и x2, y2 соответственно.
  7. Устанавливается цвет шрифта.
  8. Если координаты x и y совпадают, то рисуется горизонтальная прямая.
  9. Если координаты y совпадают, то рисуется вертикальная прямая.
  10. Если координаты x и y различны, то рисуется наклонная прямая.
  11. Программа заканчивается.

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы