Sign in to follow this  
JackM

Invert quaternion X,Z rotation

Recommended Posts

JackM    103

Hi everyone,
 
I have a device that returns me all four components of a quaternion (X,Y,Z,W).
The problem is that,the rotation around the X and Z axis are inverse (i rotate the device left,i get a right rotation etc)
For what i know that quaternion rapresent orientation referring to an 'arbitrary' axis so i can't just negate the rotation like i would do with euler angles as far as i know wacko.png
My code is:

Quaternion rotation = new Quaternion(X,Z,Y, -W);  //i had to swap Z and Y due to the device axis orientation so i had to negate W
model.World = Matrix.CreateFromQuaternion(rotation)*Matrix.CreateTranslation(Vector3.Zero);

Any ideas on how i can invert the rotation around X and Z?

 

Thanks in advance.

Share this post


Link to post
Share on other sites
DonTzzy    487


The problem is that,the rotation around the X and Z axis are inverse (i rotate the device left,i get a right rotation etc)

 

I think your device is using left-handed coordinates, and your code is using right-handed coordinates (or the other way around.)

 

So, instead of:

 


Quaternion rotation = new Quaternion(X,Z,Y, -W); //i had to swap Z and Y due to the device axis orientation so i had to negate W

 

Try:

 

Quaternion rotation = new Quaternion(X, Y, -Z, W); 

Share this post


Link to post
Share on other sites
JackM    103

Sorry for the delay of the reply but i didn't receive the notification email.

The problem is solved,i don't know why but for some strange reason (maybe not if someone knows the math behind quaternion,which i don't)

negating both Z and Y axis gave the correct results.

Basically now eveything is working with:

Quaternion rotation = new Quaternion(X, -Z, -Y, -W);

I tried before to negate one axe but instead of inverting the orientation,it was like swapping axis again.

 

Thanks.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this