Back to index

wims  3.65+svn20090927
Vecteur.java
Go to the documentation of this file.
00001 // vecteur.java - 09/12/98
00002 
00003 package geo ;
00004 
00005 import java.awt.Graphics ;
00006 
00011 public class Vecteur extends ObjetRepere
00012 { 
00013 
00018 public double x ;
00019 
00024 public double y ;
00025 
00030 public double Ax ;
00031 
00036 public double Ay ;
00037 
00042   public Vecteur (double x, double y, String Nom, Repere R)
00043   { super (Nom, R) ; Vecteur (x, y) ; }
00044 
00049   public Vecteur (String Nom, Repere R)
00050   { super (Nom, R) ; }
00051 
00056   public Vecteur (pt A, pt B, String Nom, Repere R)
00057   { super (Nom, R) ; Vecteur (A, B) ; }
00058 
00063   public Vecteur (pt A, pt B, pt C, String Nom, Repere R)
00064   { super (Nom, R) ; Vecteur (A, B, C) ; }
00065 
00070   public void Somme (Vecteur v, Vecteur w)
00071   { defini = v.defini && w.defini ;
00072     x = v.x + w.x ;
00073     y = v.y + w.y ;
00074   }
00075 
00080   public void Produit (Vecteur v, double k)
00081   { defini = v.defini ;
00082     x = k * v.x ;
00083     y = k * v.y ;
00084   }
00085 
00090   public double Norme ()
00091   { if (defini) return Math.sqrt (x * x + y * y) ; else return -1.0 ; }
00092 
00097    public boolean zone (int X, int Y)
00098    { if (defini)
00099        { double xs = R.Abs (X) ; double ys = R.Ord (Y) ;
00100          double d = Math.abs (y * xs - x * ys + Ay * x - Ax * y) / Math.sqrt (x * x + y * y) ;
00101          if ((d <= 4.0) && ((xs - Ax) * (xs - Ax - x) <= 0) && ((ys - Ay) * (ys - Ay - y) <= 0))
00102            return true ;
00103          else return false ;
00104        }
00105      return false ;
00106    }
00107 
00112   public void trace (Graphics g)
00113   { if (defini)
00114       { int AX = R.Iabs (Ax) ; int AY = R.Iord (Ay) ;
00115         double l = Math.sqrt (x * x + y * y) ;
00116         if (l != 0.0)
00117           { int BX = AX + (int) (x * R.unitex) ;
00118             int BY = AY - (int) (y * R.unitey) ;
00119             g.drawLine (AX, AY, BX, BY) ;
00120             int X = (int) (x * 4.0 / l) ;
00121             int Y = (int) (y * 4.0 / l) ;
00122             g.drawLine (BX, BY, BX - X - Y, BY + Y - X) ;
00123             g.drawLine (BX, BY, BX - X + Y, BY + Y + X) ;
00124           }
00125         else g.fillRect (AX - 2, AY - 2, 5, 5) ;
00126         if (Nom.length () != 0)
00127         g.drawString (Nom, R.Iabs (x / 2.0 + Ax) + 3, R.Iord (y / 2.0 + Ay) - 3);
00128       }
00129   }
00130 
00135   public void fixeVecteur (pt A)
00136   { defini = defini && A.defini ;
00137     Ax = A.x ; Ay = A.y ;
00138   }
00139 
00144   public void Vecteur (double x, double y)
00145   { defini = true ; this.R = R ; this.x = x ; this.y = y ; Ax = Ay = 0.0 ; }
00146 
00151   public void Vecteur (pt A, pt B)
00152   { defini = A.defini && B.defini ;
00153     if (defini) { x = B.x - A.x ; y = B.y - A.y ; Ax = A.x ; Ay = A.y ; }
00154   }
00155 
00160   public void Vecteur (pt A, pt B, pt C)
00161   { defini = A.defini && B.defini && C.defini ;
00162     if (defini) { x = B.x - A.x ; y = B.y - A.y ; Ax = C.x ; Ay = C.y ; }
00163   }
00164  
00165 }
00166 
00167