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..
Code :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.