views:

97

answers:

4

Hey guys, I am having a simple program, it draws a circle :/ This works fine...

for (k = 1; k < n+1+1; k++){
 vertices[k].color = GU_COLOR( 0.0f, 0.0f, 1.0f, 0.0f );
 vertices[k].x = cos_d( 360 - ((k-1) * dstep) );
 vertices[k].y = sin_d( 360 - ((k-1) * dstep) );
 vertices[k].z = 0.0f;
}
...
//Now draw it
sceGumDrawArray(GU_TRIANGLE_FAN, GU_COLOR_8888|GU_VERTEX_32BITF|GU_TRANSFORM_3D, n+1+1, 0, vertices);

But this doesn't:

for (k = 1; k < n+1+1; k++){
 vertices[k].color = GU_COLOR( 0.0f, 0.0f, 1.0f, 0.0f );
 vertices[k].x = cos_d( ((k-1) * dstep) );
 vertices[k].y = sin_d( ((k-1) * dstep) );
 vertices[k].z = 0.0f;
}

But shouldn't this be the same - just with difference that the first loop calculates the vertices clockwise and the second anti-clockwise? It's just awkward that it just doesn't draw the vertices using the second example...

Or am I stupid? //rhetoric question

Thx in advance!

A: 

I don't know the library you are using, but are you sure you aren't mixing radians and degrees in your code? Do the sin and cos functions take radians or degrees?

dark_charlie
This is unlikely to be the issue given that it works one way. I imagine the `_d` of `cos_d` means "degrees".
Troubadour
+2  A: 

Not really sure how you are drawing the circle (I see you creating a list of vertices, but know nothing about the rendering of those), but:

Usually, when you invert from clockwise to counter-clockwise, you end up getting the normal inverted, which means that you are looking at the back of your circle. And, as is the case with most APIs, when looking at the back of something (that doesn't have volume), it isn't rendered.

This is called backface culling.

Bruno Brant
+6  A: 

It may not be drawn because of back-face culling.

"If the user has specified that front-facing polygons have a clockwise winding, if the polygon projected on the screen has a counter-clockwise winding it has been rotated to face away from the camera and will not be drawn."

Tom Sirgedas
This is exactly the reason IMHO. I can't figure out anything else
valdo
One way you could check this is to disable back-face culling (if that is possible in the PSP SDK). Another way is to move your camera to the other side of the object, and see if it starts drawing :)
Merlyn Morgan-Graham
A: 

Presumably dstep is 360 / n?

As an aesthetic point, with GL_TRIANGLE_FAN you probably want your first point to be the center of the circle.

Grumdrig