gimp

02-26-2001, 02:06 PM

I've tried to create a matrix class that is useful and that i can understand (as I can't quite grasp anyone else's classes).

My matrix class is only designed to be used by opengl commands so I probably won't need to know a lot to make it work.

I've done a lot of groundwork before posting and have read a lot of matrix articles. I'm stuck on one point though.

So far I have a camera and an object matrix. The way I understand this is that the object matrix represents a local coordinate system. It's translation moves the local coordinate system around in world space. (Mhen multiplied).

I rotate my object around the Z axis(roll) by 45deg then rotate around the Y axis 45 deg(yaw) then tell it to move down the Z axis X units. This seems to squish the object at the object remains on the z plane.

Here are some code samples to show what I'm doing:

inline void CMatrix::Yaw(const float a_Degrees)

{

float Radians = Degrees2Radians(a_Degrees);

float c = Cos(Radians);

float s = Sin(Radians);

m[0] = c;

m[2] = -s;

m[8] = s;

m[10] = c;

}

and

inline void CMatrix::Forward(const float a_Units)

{

m[12] = m[8] * a_Units + m[12];

m[13] = m[9] * a_Units + m[13];

m[14] = m[10] * a_Units + m[14];

m[15] = m[11] * a_Units + m[15];

}

inline void CMatrix::Roll(const float a_Degrees)

{

float Radians = Degrees2Radians(a_Degrees);

float c = Cos(Radians);

float s = Sin(Radians);

m[0] = c;

m[1] = s;

m[4] = -s;

m[5] = c;

}

and this is how I'd like to use my matrix:

glMatrixMode(GL_MODELVIEW);

CMatrix Camera = -Viewer;

glLoadMatrixf(Camera);

glPushMatrix();

glMultMatrixf(Object1);

glColor3f(0,0,1);

glRotatef(180,0,1,0); //Glut cone is back to front

glutWireCone(0.5,1,10,6);

glPopMatrix();

Can anyone see where I'm going wrong?

I also have another problem with that code while it's up, I can't seem to work out how to rotate multiple times. How do I take the rotation I have, then 'add' another rotation to it. I assume I'll need to renormalise at some point. Do I renormalise all the 9 elements together or each vector seperatly?

Many, many thanks. (I really need to work this out.

Chris

[This message has been edited by gimp (edited 02-26-2001).]

My matrix class is only designed to be used by opengl commands so I probably won't need to know a lot to make it work.

I've done a lot of groundwork before posting and have read a lot of matrix articles. I'm stuck on one point though.

So far I have a camera and an object matrix. The way I understand this is that the object matrix represents a local coordinate system. It's translation moves the local coordinate system around in world space. (Mhen multiplied).

I rotate my object around the Z axis(roll) by 45deg then rotate around the Y axis 45 deg(yaw) then tell it to move down the Z axis X units. This seems to squish the object at the object remains on the z plane.

Here are some code samples to show what I'm doing:

inline void CMatrix::Yaw(const float a_Degrees)

{

float Radians = Degrees2Radians(a_Degrees);

float c = Cos(Radians);

float s = Sin(Radians);

m[0] = c;

m[2] = -s;

m[8] = s;

m[10] = c;

}

and

inline void CMatrix::Forward(const float a_Units)

{

m[12] = m[8] * a_Units + m[12];

m[13] = m[9] * a_Units + m[13];

m[14] = m[10] * a_Units + m[14];

m[15] = m[11] * a_Units + m[15];

}

inline void CMatrix::Roll(const float a_Degrees)

{

float Radians = Degrees2Radians(a_Degrees);

float c = Cos(Radians);

float s = Sin(Radians);

m[0] = c;

m[1] = s;

m[4] = -s;

m[5] = c;

}

and this is how I'd like to use my matrix:

glMatrixMode(GL_MODELVIEW);

CMatrix Camera = -Viewer;

glLoadMatrixf(Camera);

glPushMatrix();

glMultMatrixf(Object1);

glColor3f(0,0,1);

glRotatef(180,0,1,0); //Glut cone is back to front

glutWireCone(0.5,1,10,6);

glPopMatrix();

Can anyone see where I'm going wrong?

I also have another problem with that code while it's up, I can't seem to work out how to rotate multiple times. How do I take the rotation I have, then 'add' another rotation to it. I assume I'll need to renormalise at some point. Do I renormalise all the 9 elements together or each vector seperatly?

Many, many thanks. (I really need to work this out.

Chris

[This message has been edited by gimp (edited 02-26-2001).]