This content has been marked as final. Show 3 replies
Perhaps you could start by explaining1 person found this helpful
(1) What you think that program does
(2) What the program actually does
(3) How the result differs from your expectation
The initial matrix is a 4x4 matrix, which contains a 3x3 matrix to the upper left, being the unit vectors in the positive direction on the cartesin 3D plane.
Under each vector is the digit 0, denoting vectors. I have left the result column, the final 4th column, as straight zero's, which should denote no transformation of the enclosed vector.
setRotation only OVERWRITES the matrix with the trigonometry for the rotation matrix. It doesn't take the previous matrix as functional values.
My code actually works as expected.
Is there anyone out there who can give me the full details about the formatted meaning of the Matrix4d which initialises Transform3D?
Edited by: Zachary1234 on Jan 30, 2013 5:41 PM
The answer lies in the nature of what a Rotation Matrix is, and what it never is.
by going Matrix4d.setRotation(AxisAngle),
You are altering your initial matrix, being a list of vectors, and putting in their place a correct set of multiplers.
the result matrix, when multipled by a co dimensional vector, will rotate that later vector's components
by each value correctly to effect the right angular rotation.
However, the secondary matrix is by no means a vector, just the correct multipler value arrangement.
You cannot act to go setRotation(AxisAngle) again, you can only operate on the original Matrix, list of vectors.
So all is well in this little subspace, in fact, of javaland.