Application du procédé d'orthonormalisation de Gram-Schmidt pour obtenir les vecteurs du repère formé par trois points javax.vecmath.Point3d. Cette méthode retourne les trois vecteurs e1,e2,e3 qui composent le repère. Pour plus de détails, voyez l'article sur Wikipédia : Procédé de Gram-Schmidt.

 

public static Vector3d[] gramSchmidt(Point3d o, Point3d a, Point3d b) {

Vector3d e2 = new Vector3d(a);
e2.scale(-1);
e2.add(b);
e2.normalize();

Vector3d AO = new Vector3d(a);
AO.scale(-1);
AO.add(o);

double PS = AO.dot(e2);
Vector3d AC = new Vector3d(e2);
AC.scale(PS);

Vector3d CO = new Vector3d(AC);
CO.scale(-1);
CO.add(AO);

Vector3d e1 = new Vector3d(CO);
e1.normalize();

Vector3d e3 = new Vector3d();
e3.cross(e1, e2);
e3.normalize();

return new Vector3d[] { e1, e2, e3 };

}