Which way is forward? :)

Started by
2 comments, last by b00ny 22 years, 10 months ago
I’m new to this, so please excuse me if this is a stupid question. If an object has been rotated through its axis, how can I determine which way is forwards? My object starts off with its X,Y and Z angles all at 0. So I consider forwards to be in the XZ plane, and depending on the rotation through the Y axis, I can work out how much to translate in X and Z. However, if I then rotate the object through the X axis, say by 90 degrees, then forwards is now in the YX plane. I have managed to get this working on 90 degree rotations, but the code is horrible – I keep track of the current forwards plane using an enumeration. Also, I want it to work for any amount of rotation. Does anyone know of a formula that allows me to work this out based on the current rotations? Hope that’s clear, maybe the code below will clarify what I want to achieve. // x,y and z are all 0 initially pObj->MoveForwards(10.0f); // will move along z axis pObj->RotateY(90.0f); pObj->MoveForwards(10.0f); // will move along x axis pObj->RotateY(-90.0f); pObj->RotateX(90.0f); pObj->MoveForwards(10.0f); // will move along y axis Thanks for reading!
Advertisement
Wouldn''t it work when you keep track of a direction vector as well? When calling the rotate function, you also change the vector that sets the forward direction. But then you will also need a vector pointing to the top of your object, orthogonally (don''t know the exact term, maths in English isn''t my strongest point) on the directional vector, so your program knows exactly how to draw the object. In your class, you just save 6 extra variables.

I hope it helps and that I wasn''t too confusing!
Wouter
Thanks for replying Wouter.

So you’re saying I should keep a forward vector.

So initially, if I’m moving in positive Z, it would be [0,0,1]

I think I understand what you’re getting at, I’ll give it a whirl.

Cheers...
You want to rotate your original view direction by whatever you rotate your camera.


Mike
"Unintentional death of one civilian by the US is a tragedy; intentional slaughter of a million by Saddam - a statistic." - Unknown

This topic is closed to new replies.

Advertisement