Создание линии без использования Line - Pascal ABC

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

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

Прошу помогите! мучаюсь второй день, не могу придумать как сделать общую процедуру, чтобы рисовать линию в паскаль АВС без использования Line. Линии необходимо рисовать в разных направлениях. у меня два задания прямоугольник (пунктиром) и звезда пятиконечная.

Решение задачи: «Создание линии без использования Line»

textual
Листинг программы
uses graphABC;
//процедура рисования отрезка
procedure Brezenhem(x1,y1,x2,y2:integer);
var currentX, currentY: integer;
    errorX, errorY: integer;
    d, dx, dy, incX, incY: integer;
begin
dx := x2 - x1;
dy := y2 - y1;
errorX := 0;
errorY := 0;
if(dx > 0) then incX := 1
else if(dx = 0) then incX := 0
else incX := -1;
if(dy > 0) then incY := 1
else if(dy = 0) then incY := 0
else incY := -1;
dx := abs(dx);
dy := abs(dy);
if(dy > dx) then d := dy
else d := dx;
currentX := x1;
currentY := y1;
setpixel(currentX, currentY, clRed);
while((currentX <> x2) OR (currentY <> y2)) do
 begin
  errorX := errorX + dx;
  errorY := errorY + dy;
  if(errorX >= d) then
   begin
    errorX := errorX - d;
    currentX := currentX + incX;
   end;
  if(errorY >= d) then
   begin
    errorY := errorY - d;
    currentY := currentY + incY;
   end;
  SetPixel(currentX, currentY, clRed);
 end;
end;
 
var x1,y1,x2,y2,i,x3,x4,y3,y4,d:integer;
begin
setwindowsize(600,400);
centerwindow;
d:=5;
x1:=windowwidth div 2-d*50;
y1:=windowheight div 2-d*30;
x2:=windowwidth div 2+d*50;
y2:=windowheight div 2+d*30;
x3:=x1;
x4:=x3+d;
while x3<x2 do
 begin
  Brezenhem(x3,y1,x4,y1);
  Brezenhem(x3,y2,x4,y2);
  x3:=x3+2*d;
  x4:=x3+d;
 end;
y3:=y1;
y4:=y3+d;
while y3<y2 do
 begin
  Brezenhem(x1,y3,x1,y4);
  Brezenhem(x2,y3,x2,y4);
  y3:=y3+2*d;
  y4:=y3+d;
 end;
end.

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

  1. В начале кода подключается библиотека graphABC.
  2. Затем определяется процедура Brezenhem, которая принимает на вход координаты вершин отрезка и рисует его на графике.
  3. Далее объявляются переменные currentX, currentY, errorX, errorY, d, dx, dy, incX, incY, которые будут использоваться для построения отрезка.
  4. После этого происходит расчет dx и dy, а также определение значений incX и incY.
  5. Затем устанавливается начальные значения currentX и currentY.
  6. Далее идет цикл while, который выполняется до тех пор, пока текущие координаты не станут равными конечным. Внутри цикла происходит расчет errorX и errorY, а также обновление текущих координат.
  7. После завершения цикла происходит вызов функции SetPixel для рисования отрезка на графике.
  8. В конце кода объявляются переменные x1, y1, x2, y2, i, x3, x4, y3, y4, d, которые будут использоваться для построения отрезка.
  9. Затем устанавливается размер окна приложения.
  10. После этого происходит итерация по отрезку, во время которой вызываются процедуры Brezenhem для каждой пары вершин.
  11. В конце итерации обновляются значения y3 и y4.
  12. Конец цикла.
  13. Завершение работы приложения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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