Koordynaty pięciokąta w przestrzeni 3d

0

Cześć. Ostatnio natknąłem się na łatwy sposób wyliczenia koordynatów voxeli n-kąta.

void getPentagonCoords(float radius){
		float theta = 180.0f / 5;
		for (int i = 0; i < 5;i++){
			snakeHeadXCoords[i] = (float) (Math.cos(theta * (i + 1)) * radius);
			snakeHeadYCoords[i] = (float) (Math.sin(theta * (i + 1)) * radius);
		}
}

Koordynaty Z w moim przypadku są stałe. Ale po narysowaniu tego pięcokąta jako polygonu dostałem bardzo dziwne rezultaty. Postanowiłem więc zbudować mój pięciokąt z 5 trójkątów ale rezultat był taki sam.
Tutaj jest kod budowy:

 
		GL11.glBegin(GL11.GL_TRIANGLES);
			GL11.glVertex3f(snakeHeadXCoords[0], snakeHeadYCoords[0], -0.5f);
			GL11.glVertex3f(snakeHeadXCoords[1], snakeHeadYCoords[1], -0.5f);
			GL11.glVertex3f(0, 0, -0.5f);
			
			GL11.glVertex3f(snakeHeadXCoords[1], snakeHeadYCoords[1], -0.5f);
			GL11.glVertex3f(snakeHeadXCoords[2], snakeHeadYCoords[2], -0.5f);
			GL11.glVertex3f(0, 0, -0.5f);

			GL11.glVertex3f(snakeHeadXCoords[2], snakeHeadYCoords[2], -0.5f);
			GL11.glVertex3f(snakeHeadXCoords[3], snakeHeadYCoords[3], -0.5f);
			GL11.glVertex3f(0, 0, -0.5f);
			
			GL11.glVertex3f(snakeHeadXCoords[3], snakeHeadYCoords[3], -0.5f);
			GL11.glVertex3f(snakeHeadXCoords[4], snakeHeadYCoords[4], -0.5f);
			GL11.glVertex3f(0, 0, -0.5f);
			
			GL11.glVertex3f(snakeHeadXCoords[4], snakeHeadYCoords[4], -0.5f);
			GL11.glVertex3f(snakeHeadXCoords[0], snakeHeadYCoords[0], -0.5f);
			GL11.glVertex3f(0, 0, -0.5f);
		GL11.glEnd();

A tutaj rezultat:
http://imageshack.us/photo/my-images/832/pentagon.jpg/.
Może ktoś pomóc?

1

Jak rozumiem, chcesz uzyskać pięciokąt foremny. W takim wypadku powinieneś mieć:

float theta = 360.0f / 5;

zamiast

float theta = 180.0f / 5;
2

A nie 2*Math.Pi/5 ?

0

Dzięki za pomoc. 2pi zadziałało. Troche mi sie pomatwało bo OpenGL przyjmuje argumenty w stopniach nie w radianach :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1