hi. I am new to openGL and would like to draw a smooth circle…
Can anyone hint me ?
Should I use gl.glBegin(GL.GL_LINE_STRIP) and some sine, cosin in it??
thanks
hi. I am new to openGL and would like to draw a smooth circle…
Can anyone hint me ?
Should I use gl.glBegin(GL.GL_LINE_STRIP) and some sine, cosin in it??
thanks
Something like this…
const float DEG2RAD = 3.14159/180;
void drawCircle(float radius)
{
glBegin(GL_LINE_LOOP);
for (int i=0; i < 360; i++)
{
float degInRad = i*DEG2RAD;
glVertex2f(cos(degInRad)*radius,sin(degInRad)*radius);
}
glEnd();
}
Do remember that Google is your friend… You could have found this with less typing and got a quicker answer with a Google search.
Other solution can be to fake a circle by using gluDisk() and set parameters accordingly. i.e set inner radius equal to outer radius.
Another method can be to go for subdivision curves , midpoint , catmull clark if you want to go for higher precision.
Or you can draw it using NURBS.
You can not get a perfect circle though.
And if you want it to be really really smooth, check out GL_LINE_SMOOTH (hint: enable blending).
thank you very much .
I have done it.
gl.glBegin(GL.GL_LINE_LOOP);
for(int i =0; i <= 300; i++){
double angle = 2 * Math.PI * i / 300;
double x = Math.cos(angle);
double y = Math.sin(angle);
gl.glVertex2d(x,y);
}
gl.glEnd();
Check out this site: http://slabode.exofire.net/circle_draw.shtml
The code there draws circles and arcs without using sine or cosine and is very fast.