1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
private Matrix3f getRotMat(float[] coordVect){
// calcul du vecteur directeur de l'axe ZPrim
Vector3f zPrim = new Vector3f (coordVect[0], coordVect[1], coordVect[2]);
zPrim.normalize();
// Calcul d'un vecteur orthogonal : YPrim
Vector3f yPrim = new Vector3f (1/coordVect[0], 1/coordVect[1], -2/coordVect[1]);
yPrim.normalize();
// Calcul d'un vecteur orthogonal aux deux precedents
Vector3f xPrim = new Vector3f();
xPrim.cross(zPrim, yPrim);
xPrim.normalize();
//Matrice initiale inversée
Matrix3f matInit = new Matrix3f ();
matInit.setIdentity();
matInit.invert();
// Matrice de la base PRIM
Matrix3f matRot = new Matrix3f();
matRot.setColumn(0, xPrim);
matRot.setColumn(1, yPrim);
matRot.setColumn(2, zPrim);
// Multiplication des deux matrices
matRot.mul(matInit);
return matRot;
}
} |