So i ran into a problem with circle. I could draw a whole circle easily, but when i tried half of the circle, it doesn't go in the way i wanted.
in my draw circle function, i set the vectors' coordinate base on the information of the class. Then use "gl triangle fan" to draw the circle:
and this is how it looks like:Code:vect2* BuildBar()
{
//Pi() is the function return Pi's value
Vertices = new vect2[numVertices+2];
for(int j=0; j<numVertices+2; j++)
{
double a = 2*Pi() * (j/double(numVertices));
Vertices[j] = vect2(cos(a), sin(a)) * (R); //R is the radius
}
return Vertices;
}
void Render()
{
glLoadIdentity();
glTranslatef(Pos.x, Pos.y, 0);
glBegin(GL_TRIANGLE_FAN);
for(int j=0; j<numVertices+2; j++)
{
glVertex2d(Vertices[j].x, Vertices[j].y);
}
glEnd();
}
http://www.albumtown.com/data/953ecc...66_p935793.gif
But my intention is just only part of the circle. I was trying to get something like this:
http://www.albumtown.com/data/953ecc...66_p935796.gif
so i change my build function and tried to get that half circle:
and i get this:Code:vect2* BuildBar()
{
/**/
Vertices = new vect2[numVertices+2];
for(int j=0; j<numVertices+2; j++)
{
double a = Pi()/1.5 * (j/double(numVertices));
Vertices[j] = vect2(cos(a), sin(a)) * (R);
}
return Vertices;
}
http://www.albumtown.com/data/953ecc...66_p935794.gif
No matter what way i rotate, the whole thing just won't stay straight like the second picture. So, what should i set for the sin() and cos() in order to straight up the circle like the second picture?
