Followers 0

# rotating space ship

## 30 posts in this topic

well I am going back to opengl.I am working on an asteroids game.it has been a long time since I have posted. I really like opengl.my question is how do I get a space ship rendered using line loop and vertices rotate around its center relative to where its drawn. I know I have asked this question before but I never solved this problem. I know I should use glRotate and glTranslate commands in the correct order.

0

##### Share on other sites

What did you try? If that didn't work, try reversing the order of the rotation and the translation.

Take a look here. Looks like it is still an unsolved problem...

Edited by dejaime
2

##### Share on other sites

I have tried reversing the order of the rotation and translate commands.

0

##### Share on other sites

I am using c++ and opengl

0

##### Share on other sites

should I repost my code?

0

##### Share on other sites

Please, do post an updated version of it.

Can you do a small test?

What happens if you only rotate, and remove the translate?

What happens if you only translate?

0

##### Share on other sites

What happens if you only rotate, and remove the translate?
What happens if you only translate?

ok I will try that

0

##### Share on other sites

here is my code

void DrawShip(GLfloat position_X,GLfloat position_Y, GLfloat position_Z, GLfloat rotation,GLfloat color)
{
glPushMatrix();
glColor3f(color,0.0f,0.0f);
glRotatef(rotation,0.0f,0.0f,1.0f);
glTranslatef(position_X,position_Y,position_Z);
glBegin(GL_LINE_LOOP);
glVertex3f(0.0f,-0.25f,0.0f);
glVertex3f(-0.25f,-0.5f,0.0f);
glVertex3f(-0.5f,-0.5f,0.0f);
glVertex3f(-0.0f,0.5f,0.0f);
glVertex3f(0.5f,-0.5f,0.0f);
glVertex3f(0.25f,-0.5f,0.0f);
glVertex3f(0.0f,-0.25f,0.0f);
glEnd();
glPopMatrix();
}

0

##### Share on other sites

I tried rotate only and it only rotates and I tried translate only and it only moves.

0

##### Share on other sites

I tried rotate only and it only rotates
But does it rotates correctly? Or around some weird point?
0

##### Share on other sites

it rotates around the screen origin

0

##### Share on other sites

I'm pretty sure you are beyond help you've been asking this same question for years. Have you tried learning some maths?

http://www.arcsynthesis.org/gltut/

This might be of help.

1

##### Share on other sites

what math should  I study

0

##### Share on other sites

Vectors and linear algebra.

0

##### Share on other sites

what part of linear algebra should I focus on?

0

##### Share on other sites

I think what's wrong here is that he is drawing the small ship on a larger object and rotating this same larger object, what causes the ship to not rotate correctly. The fact that I don't know a line of OpenGL halts me, but certainly our communication is the main issue...

0

##### Share on other sites

thanks dejaime but I have only one object that I am translating and rotating.

0

##### Share on other sites

what part of linear algebra should I focus on?

Definitely the Cayley-Hamilton Theorem.

0

##### Share on other sites

Ok, a really brief overview:

1) Be sure that the origin (0,0,0) defines where you want your model to rotate about, this could be a problem with the model file. For instance, if you are describing a box, the vertex coordinates should go from negative x, y, z to positive x, y, z, e.g., the six vertices (1, 0, 0) , (-1, 0, 0), (0, 1, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1)   The "center" of the box would be at the origin.  If this is not true, none of the following will work.

3)  Two ways to do rotations, quaternions and matrices.   Matrices are a little easier to grasp for the beginner, but quaternions involve less computation.   The "standard" way is matrices.

3) The Matrix way:  You have independent rotationa bout the x, y, z, axes.   These are normally termined pitch, yaw, and roll.   You then generate three matirces which descbibed these independent rotations, and multiply these matrices together, along with the translation matrix which locates your object in the world.   In math terms, this a transformation is from "model" space to "world" space.   You will often hear this matrix described as the "world" matrix.  This matrix is then multiplied by the "view" (camera position and rotation) and "projection" (perspective, orthogonal ) matrices to produce the 2D x,y coordinates on your display.

The Quaternion way:   You have an "axis of rotation", which is defined by a 3D vector, and additional number which indicates the amount and direction (positive or negative)of rotation.   So a quaternion is really 4D vector. For example, if the axis of rotation represents the direction that the object is travelling in, then a rotation about this axis would be a "roll" which respect to the direction of travel of the object.   Then add your translation vector.  You then multiply the vertex coordinates (a 3D vector) by the quaternion, which proces another 3D vector.

Edited by SunDog
1

## Create an account

Register a new account