/** * La classe Direction3D derive de {@link CoordonneesHomogenes3D CoordonneesHomogenes3D} * pour permettre l'instanciation d'objets de type direction en trois dimensions. * * @author Nicolas Janey * @author nicolas.janey@univ-fcomte.fr * @version 1.0, 12/11/08 */ public class Direction3D extends CoordonneesHomogenes3D { /** * Constructeur pour une Direction3D orientée en (0.0, 0.0, 1.0). * */ public Direction3D() { super(0.0,0.0,1.0,0.0); } /** * Constructeur pour une Direction3D orientée en (x, y, z). * * @param x la coordonnee x affectee. * @param y la coordonnee x affectee. * @param z la coordonnee x affectee. * */ public Direction3D(double x,double y,double z) { super(x,y,z,0.0); } /** * Constructeur pour une Direction3D orientée en (x,y,z). * * @param d l'objet Direction3D d'initialisation par copie. * */ public Direction3D(Direction3D d) { super(d); } /** * Constructeur pour une Direction3D orientee selon le vecteur norme * defini entre deux {@link Position3D Position3D}. * * @param pi l'objet {@link Position3D Position3D} de depart. * @param pf l'objet {@link Position3D Position3D} d'arrivee. * */ public Direction3D(Position3D pi, Position3D pf) throws ArithmeticException { double dx = pf.c[0]-pi.c[0]; double dy = pf.c[1]-pi.c[1]; double dz = pf.c[2]-pi.c[2]; double d = Math.sqrt(dx*dx+dy*dy+dz*dz); if ( d == 0.0 ) { throw new ArithmeticException(); } c = new double[4]; c[0] = dx/d; c[1] = dy/d; c[2] = dz/d; c[3] = 0.0; } }