Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

imr1984

calculating the Y and X axis from the Z axis

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

If you intended to correct an error in the post then please contact us.

Recommended Posts

ok i tried to work this out for a few hours, but i couldnt figure it out. I basically want to be able to calculate the X and Y axis, given the Z and a rotation around the Z (roll angle). so the cross product of the resulting 2 vectors should equal the z vector has anyone got any ideas?

Share this post


Link to post
Share on other sites
Advertisement
Construct the orientation without the roll angle, and then concatenate a matrix that represents that rotation about z.

Vec3 y_axis(0,1,0);
Vec3 x_axis = y_axis.cross(z_axis).normalize();
y_axis = z_axis.cross(x_axis);

// construct the orientation without roll.
Matrix3 orientation(x_axis, y_axis, z_axis);

// construct a matrix that represents a rotation about z.
Matrix3 rotate_about_z(Vec3(0,0,1), roll_angle);

// concatenate.
orientation = orientation * rotate_about_z;


[edited by - ajas95 on February 20, 2004 12:16:32 PM]

[edited by - ajas95 on February 20, 2004 12:18:08 PM]

Share this post


Link to post
Share on other sites
quote:
Original post by ajas95
Construct the orientation without the roll angle, and then concatenate a matrix that represents that rotation about z.

Vec3 y_axis(0,1,0);
Vec3 x_axis = y_axis.cross(z_axis).normalize();
y_axis = z_axis.cross(x_axis);

// construct the orientation without roll.
Matrix3 orientation(x_axis, y_axis, z_axis);

// construct a matrix that represents a rotation about z.
Matrix3 rotate_about_z(Vec3(0,0,1), roll_angle);

// concatenate.
orientation = orientation * rotate_about_z;



That won''t work when the zaxis is equal to (0,1,0). because in your line:
x_axis = y_axis.cross(z_axis).normalize()
you will get
(0,1,0) x (0,1,0) = (0,0,0) and you can''t normalize (0,0,0), you get a division by 0...

But anyway, there is no solution to your question... a rotation without a frame of reference is meaningless, you say "given the Z and a rotation around the Z"... well you first have to define what direction 0 degrees represents...

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!