【发布时间】:2014-03-25 18:53:32
【问题描述】:
我正在使用此 Bresenham 算法来绘制圆。此代码有效,但我需要实心圆圈,而不仅仅是边框。
这是我的代码:
void setPixel(int x,int y) {
glBegin(GL_POINTS);
glColor3f(0.0f, 1.0f, 0.0f);
glPointSize (20.0);
glVertex2i(x,y);
glEnd();
}
void BresenhamKrug(int xCenter, int yCenter,int r){ //napravite parametarski poziv
int x=0,y=r;
int d=3-(2*r);
glColor3f(0.5,0.3,1.);
while(x<=y)
{
setPixel(xCenter+x,yCenter+y); setPixel(xCenter+y,yCenter+x);
setPixel(xCenter-x,yCenter+y); setPixel(xCenter+y,yCenter-x);
setPixel(xCenter-x,yCenter-y); setPixel(xCenter-y,yCenter-x);
setPixel(xCenter+x,yCenter-y); setPixel(xCenter-y,yCenter+x);
if (d<0)
d += (4*x)+6;
else{
d += (4*(x-y))+10;
y--;
}
x++;
}
glFlush();
}
有什么办法吗?
【问题讨论】:
-
这是作业吗?因为如果不是这样,通过立即模式点绘制的 Bresenham 光栅化是使用 OpenGL 绘制圆的效率最低的方法。
-
不,我在一些图片中使用了 bresenham 圆点。因为我想用这个算法画圆。