www.jpct.net
jPCT - a 3d engine for Java => Support => Topic started by: zammbi on September 01, 2008, 11:15:27 am
-
I'm having a little trouble with grabbing the y rotation from a matrix. I found a nice example for 3x3 matrix but I'm totally lost with jpct matrix.
-
It's the same. The upper left part is the rotational part. You can extract the values needed from the float[]-array that getDump() returns.
-
Seems what I have is incorrect. Maybe someone can help me?
I'm using this code to work out the 3 angles got it from
http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToEuler/index.htm
public final SimpleVector matrixToRad(Matrix m) {
float[] mDump = m.getDump();
float heading,attitude,bank;
if (mDump[4] > 0.998) { // singularity at north pole
heading = (float) Math.atan2(mDump[2],mDump[10]);
attitude = (float) (Math.PI/2);
bank = 0;
}
else if (mDump[4] < -0.998) { // singularity at south pole
heading = (float) Math.atan2(mDump[2],mDump[10]);
attitude = (float) (-Math.PI/2);
bank = 0;
}
else{
heading = (float) Math.atan2(-mDump[8],mDump[0]);
bank = (float) Math.atan2(-mDump[6],mDump[5]);
attitude = (float) Math.asin(mDump[4]);
}
return new SimpleVector(bank,heading,attitude);
}
I wish there was a getYrotation on a object3D because I'm totally confused how to do these matrices.
-
Nvm it is correct. I just had to negate the number.