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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 20:51   #1
Влад09
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 13
Восклицание Что не так в коде проги по построению окружности за Брезенхемом

Вот код но он не работает!!ПОмогите пожалуйста!!Очень прошу!!!


procedure bres_circle(xc,yc,r:interger):
var x,y,d:integer:
procedure sim(x,y;integer);
begin
putpixel(x+xc,y+yc,White);
putpixel(x+xc,-y+yc,White);
putpixel(-x+xc,-y+yc,White);
putpixel(-x+xc,y+yc,White);
putpixel(y+xc,x+yc,White);
putpixel(y+xc,-x+yc,White);
putpixel(-y+xc,-x+yc,White);
putpixel(-y+xc,x+yc,White);
end;
begin
d:=3-2*y;
x:=0;
y:=r;
while(x <= y) do
begin
sim(x,y);
if d<0 then d:=d+4*x+6
else begin
d:=d+4*(x-y)+10;
dec(y)
end;
inc(x)
end;
end;
Влад09 вне форума Ответить с цитированием
Старый 28.10.2010, 21:07   #2
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

вот процедура, правда коряво написана, но работает

Код:
procedure DrawCircle (const xc, yc, R, color:integer);
label 1,2,3,4,10,20,30;
var
    lim, x, y, di, s1, s2: Integer;
begin                      	    
    x := 0;
    y := R;
    lim := 0;
    di := 2 * (1 - R);
1:  PutPixel(x + xc, y + yc, color);
    PutPixel(x + xc, -y + yc, color);
    PutPixel(-x + xc, y + yc, color);
    PutPixel(-x + xc, -y + yc, color);
    if y <= lim then goto 4;   
    if di < 0 then goto 2;
    if di > 0 then goto 3;
    if di = 0 then goto 20;
2:  s1 := 2 * di + 2 * y - 1 ;
    if s1 <= 0 then goto 10;
    if s1 > 0 then goto 20;
3:  s2 := 2 * di - 2 * x - 1;          
    if s2 <= 0 then goto 20;
    if s2 > 0 then goto 30;
10: x := x + 1;                           
    di := di + 2 * x + 1;
    goto 1;
20: x := x + 1;                            
    y := y - 1;
    di := di + 2 * x - 2 * y + 2;
    goto 1;
30: y := y - 1;                            
    di := di - 2 * y + 1;
    goto 1;
4:
end;
Kingdom_Reborn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета работает не так как надо.. нужно найти ошибку в коде... Человек_Борща Общие вопросы Delphi 10 13.04.2010 20:06
Проблема с виндой из за проги,не так ли??? blackstersl Софт 4 26.01.2009 00:36
C++ ошибка в коде. Непонимаю что не так POPOV Помощь студентам 2 04.09.2008 18:04
Как прописать алиас в коде проги(компонента TABLE, бд парадокс) sashaslam БД в Delphi 2 07.07.2008 13:42
Что в коде не так? Simply-Art Общие вопросы Delphi 3 08.07.2007 19:32