Cubeを書く

なんだかんだ言って最初はテストでCubeを使う。

void drawCube(double x, double y, double z)
{
	int i, j;

	x *= 0.5;
	y *= 0.5;
 	z *= 0.5;
	
	GLdouble vertex[][3] = {
		{x, y, z }, // 0
		{-x, y, z }, // 1
		{-x, -y, z }, // 2
		{x, -y, z }, // 3
		{x, y, -z }, // 4
		{-x, y, -z }, // 5
		{-x, -y, -z }, // 6
		{x, -y, -z } // 7
	};
	
	static int face[][3] = {
		// front
		{ 0, 1, 2 },
		{ 0, 2, 3 },
		// back
		{ 5, 4, 7 },
		{ 5, 7, 6 },
		// top
		{ 0, 4, 5 },
		{ 0, 5, 1 },
		// bottom
		{ 2, 6, 7 },
		{ 2, 7, 3 },
		// right
		{ 3, 7, 4 },
		{ 3, 4, 0 },
		// left
		{ 1, 5, 6 },
		{ 1, 6, 2 }
	};
	
	static GLdouble normal[][3] = {
		{ 0.0, 0.0, 1.0 },
		{ 0.0, 0.0, 1.0 },
		{ 0.0, 0.0, -1.0 },
		{ 0.0, 0.0, -1.0 },
		{ 0.0, 1.0, 0.0 },
		{ 0.0, 1.0, 0.0 },
		{ 0.0, -1.0, 0.0 },
		{ 0.0, -1.0, 0.0 },
		{ 1.0, 0.0, 0.0 },
		{ 1.0, 0.0, 0.0 },
		{ -1.0, 0.0, 0.0 },
		{ -1.0, 0.0, 0.0 },
	};
	
	 GLfloat color[][4]={
		{1.0, 0.0, 0.0, 0.0},
		{1.0, 1.0, 0.0, 0.0},
		{0.0, 1.0, 0.0, 0.0},
		{0.0, 1.0, 1.0, 0.0},
		{0.0, 0.0, 1.0, 0.0},
		{1.0, 0.0, 1.0, 0.0},
		{1.0, 1.0, 0.0, 0.0},
		{1.0, 0.0, 0.0, 0.0},
		{1.0, 0.0, 0.0, 0.0},
		{1.0, 1.0, 0.0, 0.0},
		{0.0, 1.0, 0.0, 0.0},
		{0.0, 1.0, 1.0, 0.0}
	};
	
	glBegin(GL_TRIANGLES);
	for (j = 0; j < 12; j++) {
		glColor3fv(color[j]);
		glNormal3dv(normal[j]);
		for ( i = 0; i < 3; i++ )
		{
			glVertex3dv(vertex[face[j][i]]);
		}
	}
	glEnd();
}