/* Une classe de manipulation de directions 3D */ /* */ /* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Octobre 2009 */ public class Direction { public float dx; public float dy; public float dz; public float w; public Direction() { dx = dy = 0.0F; dz = -1.0F; w = 0.0F; } public Direction(float dx,float dy,float dz) { this.dx = dx; this.dy = dy; this.dz = dz; w = 0.0F; } public Direction(Direction d) { dx = d.dx; dy = d.dy; dz = d.dz; w = 0.0F; } public Direction(Position p1,Position p2) { dx = p2.x-p1.x; dy = p2.y-p1.y; dz = p2.z-p1.z; normalise(); } public float norme() { return((float) Math.sqrt(dx*dx + dy*dy + dz*dz)); } public void normalise() { float norme = norme(); if ( norme != 0 ) { dx /= norme; dy /= norme; dz /= norme; } } public float produitScalaire(Direction d) { return(dx*d.dx + dy*d.dy + dz*d.dz); } public static float produitScalaire(Direction d1,Direction d2) { return(d1.dx*d2.dx + d1.dy*d2.dy + d1.dz*d2.dz); } public String toString() { return("["+dx+","+dy+","+dz+"]"); } }