|
|||||
Графика и обработка изображений. Фракталы.Рисование окружностей по алгоритму Брезенхейма.Целочисленный алгоритм рисования окружностей. void Circle(int x, int y, int r,unsigned char color) { int x1,y1,yk = 0; int sigma,delta,f; x1 = 0; y1 = r; delta = 2*(1-r); do { PutPixel(x+x1,y+y1,color); PutPixel(x-x1,y+y1,color); PutPixel(x+x1,y-y1,color); PutPixel(x-x1,y-y1,color); f = 0; if (y1 < yk) break; if (delta < 0) { sigma = 2*(delta+y1)-1; if (sigma <= 0) { x1++; delta += 2*x1+1; f = 1; } } else if (delta > 0) { sigma = 2*(delta-x1)-1; if (sigma > 0) { y1--; delta += 1-2*y1; f = 1; } } if (!f) { x1++; y1--; delta += 2*(x1-y1-1); } } while(1); } На Паскале:Procedure Circle(x,y,rr:integer); var xi,yi,r,di,lim,s,ss:integer; label 1,2,3,4,10,20,30; Begin r:=rr; xi:=0; yi:=r; di:=2*(1-r); lim:=0; 1: SetPixel(xi+x,yi+y); SetPixel(xi+x,-yi+y); SetPixel(-xi+x,yi+y); SetPixel(-xi+x,-yi+y); if yi Вверх по странице, к оглавлению и навигации.
|