void DrawGLScene()
{
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View
glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0
glLoadIdentity(); // make sure we're no longer rotated.
glTranslatef(1.5f,0.0f,-7.0f); // Move Right 3 Units, and back into the screen 7
glRotatef(rquad,4.0f,4.0f,4.0f); // Rotate The Cube On X, Y, and Z
// draw a cube (6 quadrilaterals)
glBegin(GL_QUADS); // start drawing the cube.
// top of cube
glColor3f(0.0f,1.0f,0.0f); // Set The Color To Blue
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Top)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Top)
glVertex3f(-1.0f, 1.0f, 1.0f); // Bottom Left Of The Quad (Top)
glVertex3f( 1.0f, 1.0f, 1.0f); // Bottom Right Of The Quad (Top)
// bottom of cube
glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange
glVertex3f( 1.0f,-1.0f, 1.0f); // Top Right Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f, 1.0f); // Top Left Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Bottom)
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Bottom)
// front of cube
glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Front)
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Front)
glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Front)
glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Front)
// back of cube.
glColor3f(1.0f,1.0f,0.0f); // Set The Color To Yellow
glVertex3f( 1.0f,-1.0f,-1.0f); // Top Right Of The Quad (Back)
glVertex3f(-1.0f,-1.0f,-1.0f); // Top Left Of The Quad (Back)
glVertex3f(-1.0f, 1.0f,-1.0f); // Bottom Left Of The Quad (Back)
glVertex3f( 1.0f, 1.0f,-1.0f); // Bottom Right Of The Quad (Back)
// left of cube
glColor3f(0.0f,0.0f,1.0f); // Blue
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Left)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Left)
// Right of cube
glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Right)
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Right)
glEnd(); // Done Drawing The Cube
// rtri+=15.0f; // Increase The Rotation Variable For The Pyramid
rquad-=0.0f; // Decrease The Rotation Variable For The Cube
// swap the buffers to display, since double buffering is used.
glutSwapBuffers();
}
how do I get a cubes diagonal in paralle with x axis?
The code below is a snippet from a tutorial.
How do I have
one of the cubes diagonal lines in parallel with the X-axis.
By diagonal I mean fron a corner of one vertex to another going thru the cube in a diagonal fashion, ie not thru the same plane
I assume I use glrotatef??
-make the top left base of the cube (0,0,0)(translate it)
v1=(0,0,0);
v2=(a,a,a);
v1v2 is the diagonal vector v1v2=(a,a,a)
1.you must rotate this vector by alpha so it sits in the xoy plane around x axis
-the projection of this vector on the xoy plane is v1'v2'=(a,a,0)
2 alfa is the angle you must rotate around
v1v2 dot_product v'v2'=|v1v2|*|v1'v2'|cos(alpha)
3.Now you are in the xoy plane and you must rotate around z so tha diagonal sits along the x axis
This time the vectors are v1'v2' and the x axis(1,0,0)
do the same thing to compute the angle
I hope this helped!
v1=(0,0,0);
v2=(a,a,a);
v1v2 is the diagonal vector v1v2=(a,a,a)
1.you must rotate this vector by alpha so it sits in the xoy plane around x axis
-the projection of this vector on the xoy plane is v1'v2'=(a,a,0)
2 alfa is the angle you must rotate around
v1v2 dot_product v'v2'=|v1v2|*|v1'v2'|cos(alpha)
3.Now you are in the xoy plane and you must rotate around z so tha diagonal sits along the x axis
This time the vectors are v1'v2' and the x axis(1,0,0)
do the same thing to compute the angle
I hope this helped!
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement