# how do I get a cubes diagonal in paralle with x axis?

This topic is 5162 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

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??
void DrawGLScene()
{
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);	// Clear The Screen And The Depth Buffer

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();
}



##### Share on other sites
-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!

1. 1
2. 2
3. 3
Rutin
15
4. 4
5. 5

• 9
• 9
• 11
• 11
• 23
• ### Forum Statistics

• Total Topics
633678
• Total Posts
3013290
×