Question: I am getting a quaternion from sensor data that is in the coordinate system Y=up, X=right, and Z= backwards.Mine is X=forward, Y=right, Z=up.

So OX=Y, OY=Z and OZ=-X.

I have a function that can convert quaternions into 4by4 matrices, but no idea where to go from here. Any help would be greatly appreciated.

Answer: 
Assume you have two coordinate systems F1 and F2. For simplicity, assume both have same origin. Now let,

```
qo_f1 = orientation of frame F1 as seen from frame F2
qo_f2  = orientation of frame F2 is as seen from F1
q_f1 = some quaternion in F1 frame
q_f2 = q_f1 as seen from F2

```

Then,

```
q_f2 = qo_f2 * q_f1 * qo_f2.inverse()

```

**Explanation**

To rotate anything by quaternion q you just do `q*p*q.inverse()`. If p is a vector then you first convert it to "fake" quaternion by setting w=0 and x,y,z same as vector. If p is quaternion then you are good to go.
You just Need to Multiply it by q, which is the quaternion that converts points from Coord2 to the Coord1 equivalent.
Explanation:

```
q2 * point2 * (q2)^(-1) = (q1 * (q^(-1))) * point2 * (q1 * (q^(-1)))^(-1) 
= q1 * (q^(-1)) * point2 * q * (q1^(-1)) = q1 * ((q^(-1)) * point2 * q) * (q1^(-1))
= q1 * point1_equivalent * (q1^(-1))

```