Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 19:28   #1
Nikki19
Новичок
Джуниор
 
Регистрация: 21.11.2010
Сообщений: 1
Печаль DDA

Задание:Нарисовать 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-ми связный список?подскажите поажлуйста где что надо исправить что бы работало как положенно?=(
Прошу помогите,срочно надо =(((
Nikki19 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц