PDA

View Full Version : Local Axis Rotation Problem



Blain
01-18-2009, 05:40 PM
Hi. I have a 3d rotation problem that really shows up my lack
of 3d knowledge lol. I'm trying to move a camera around using
the arrow keys. Left-right arrow is supposed to rotate about
local camera z axis, and up-down around local x-axis. But
this code seems to rotate around the origin. Is it something
to do with the order of operations?
Any help greatly appreciated.

//================================================== ===

SwitchTo3D(WINDOW_WIDTH, WINDOW_HEIGHT);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

/// Load ship Position Matrix (camera)

XFORM3D m;
XForm3D_SetIdentity(&m);
XForm3D_RotateZLocal(&m, Float_DegToRad(AngleZ));
XForm3D_RotateXLocal(&m, Float_DegToRad(AngleX));
XForm3D_SetTranslation(&m, Pos.x, Pos.y, Pos.z);
glLoadMatrixf((GLfloat *)&m);

DrawPlanet(Pos);

//================================================== ===

James A.
01-18-2009, 07:41 PM
It's difficult to say without knowing what is going on inside your XForm functions. At a guess I'd say you need to rotate the Pos.x/y/z values by the transpose(?) of the matrix you created in XFORM3D m.