Articles

[Java] Procédé de Gram-Schmidt à partir de trois points

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 };

}

[Java] Calculer l'equation de la droite perpendiculaire à la droite AB et passant par B

/**
* Soit la droite (ab), on cherche l'equation de la droite (D) tel
* que (D) est perpendiculaire à (ab) et passe par b
*/

public static double[] getPerpendiculaire(Point2d a, Point2d b) {
return getPerpendiculaire(lineEquation(a, b), b);
}

public static double[] getPerpendiculaire(double[] eq, Point2d b) {
double coef = -1 / eq[0];
double pos = b.y - coef * b.x;
return new double[] { coef, pos };
}

Les trois coquillages de Demolition Man

demolitionmanhaut.jpg

Bon vous connaissez le film Demolition Man ? Et vous vous êtes demandé comment pouvaient bien s'utiliser les trois coquillages ? Et bien je suis tombé sur une image aujourd'hui et c'est assez proche de ce que j'imaginais!

3shellsbig.jpg Cliquez sur l'image de gauche pour l'afficher en grand.


3shells.jpg

[Java] Trouver la bissectrice d'un angle formé par trois points

	/**
* Retourne un point sur la bissectrice de l'angle ABC
* La bissectrice sera donc représentée par [b,point retourné]
*/
public static Point2d getBissectricePoint(Point2d a, Point2d b, Point2d c) {

Point2d p1 = getPointOnLine(b, a, 10);

Point2d p2 = getPointOnLine(b, c, 10);

Point2d p3 = getSegmentCenter(p1, p2);

return p3;
}

page 16 de 22