![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 21.11.2010
Сообщений: 1
|
![]()
Задание:Нарисовать 4х связный отрезок алгоритмом DDA. Требуется реализовать две функции – функцию рисования увеличенного пикселя (например 4Х4) обычных) для большей наглядности и функцию рисования примитива, который использует функцию увеличенного пикселя. Параметры отрезка должны задаваться с помощью генератора случайных чисел. По нажатию клавиши эти параметры должны меняться.
ПРограмма: uses graph,crt; var gd,gm,x0,y0,x1,x2,y1,y2,dx,dy:integ er; ch:char; k,x,y:real; procedure mypixel(x,y:integer;color:word); var i,j:byte; begin for i:=0 to 4 do for j:=0 to 4 do putpixel(x+i,y+j,color); end; begin gd:=detect; initgraph(gd,gm,'c:\'); ch:='a'; while ord(ch)<>27 do begin cleardevice; settextstyle(1,0,1); setcolor(2); outtextxy(0,4,'press Esc to exit or another key to continue'); x1:=random(160); x2:=random(160); y1:=random(120); y2:=random(120); dy:=y2-y1; dx:=x2-x1; if (abs(dx)>=abs(dy)) and (dx<>0) then begin if x1>x2 then begin x0:=x1;x1:=x2;x2:=x0; y0:=y1;y1:=y2;y2:=y0;end; k:=dy/dx; y:=y1+0.5; x0:=x1 ; line(x1*4,y1*4,x2*4,y2*4); while (x0<=x2 ) do begin mypixel(x0*4,round(y)*4,4); y:=y+k; mypixel(x0*4,round(y)*4,4); inc(x0); end end else if (abs(dy)>=abs(dx)) and (dy<>0)then begin if y1>y2 then begin y0:=y1;y1:=y2;y2:=y0; x0:=x1;x1:=x2;x2:=x0; end; x:=x1+0.5; y0:=y1; line(x1*4,y1*4,x2*4,y2*4); k:=dx/dy; while (y0<=y2) do begin mypixel(round(x)*4,y0*4,4); x:=x+k; inc(y0); mypixel(round(x)*4,y0*4,4); end end; ch:=readkey; end; closegraph; end. Подскажите пожалуйста в чём ошибка???он рисует иногда 4-ёх связный а иногда 8-ми связный список?подскажите поажлуйста где что надо исправить что бы работало как положенно?=( Прошу помогите,срочно надо =((( ![]() |
![]() |
![]() |