Logo Search packages:      
Sourcecode: wims version File versions  Download package

pt.java

// pt.java - 09/12/98

package geo ;

import java.awt.Graphics ;

/**
 * Point de coordonnées (x, y). X, Y sont les coordonnées sur l'écran.
 * La variable Nom contient le Nom de ce point (souvent une lettre) ;
 * R est le repère attaché à ce point ;
 * defini précise si le point existe réellement (utile pour les problèmes d'intersection).
 */

00014 public class pt extends ObjetRepere
{

/**
 * Position du point sur l'écran.
 */

00021   public int X, Y ;

/**
 * Abscisse du point.
 */

00027   public double x ;

/**
 * Ordonnée du point.
 */

00033   public double y ;

/**
 * Construit un point abstrait.
 */

00039   public pt (String Nom, Repere R)
  { super (Nom, R) ; }

/**
 * Construit la copie du point A.
 */

00046   public pt (pt A, String Nom, Repere R)
  { super (Nom, R) ; X = A.X ; Y  = A.Y ;
    x = A.x ; y = A.y ;
    defini = A.defini ; }

/**
 * Construit le point par sa position (X, Y) dans la fenêtre d'affichage.
 */

00055   public pt (int X, int Y, String Nom, Repere R)
  { super (Nom, R) ; this.X = X ; this.Y = Y ;
    x = R.Abs (X) ; y = R.Ord (Y) ;
    defini = true ; }


/**
 * Construit le point de coordonnées (x, y) relativement au repère R.
 */

00065   public pt (double x, double y, String Nom, Repere R)
  { super (Nom, R) ;
    this.x = x ; this.y = y ; 
    majXY () ; defini = true ; }

/**
 * Met à jour la position (X, Y) du point à l'aide des coordonnées (x, y).
 */

00074   public void majXY ()
  { X = R.Iabs (x) ; Y = R.Iord (y) ; }


/**
 * Positionnement du point au milieu du bi-point AB.
 */

00082   public void Milieu (pt A, pt B)
  { x = (A.x + B.x) / 2.0 ; y = (A.y + B.y) / 2.0 ;
    majXY () ;
    defini = A.defini && B.defini ; }

/**
 * Point sur le symétrique de A par rapport au point C.
 */

00091   public void Symetrique (pt A, pt C)
  { defini = A.defini && C.defini ;
    if (defini) { x = 2.0 * C.x - A.x ; y = 2.0 * C.y - A.y ; majXY () ; }
  }

/**
 * Donne l'image du point A par la rotation de centre O et d'angle a.
 */

00100    public void Rotation (pt A, pt O, double a)
   { defini = A.defini && O.defini ;
     if (defini) { double OAx = A.x - O.x ;
                   double OAy = A.y - O.y ;
                   double cosa = Math.cos (a) ;
                   double sina = Math.sin (a) ;
                   x = O.x + cosa * OAx - sina * OAy ;
                   y = O.y + sina * OAx + cosa * OAy ;
                   majXY () ;
                 }
   }

/**
 * Donne l'image du point A par l'homothétie de centre O et de rapport k.
 */

00116    public void Homothetique (pt A, pt O, double k)
   { defini = A.defini && O.defini ;
     if (defini) { x = O.x + k * (A.x - O.x) ;
                   y = O.y + k * (A.y - O.y) ;
                   majXY () ;
                 }
   }

/**
 * Donne la distance du point A au point courant.
 */

00128    public double Distance (pt A)
   { if (defini && A.defini)
       { double dx = x - A.x ; double dy = y - A.y ;
         return Math.sqrt(dx * dx + dy * dy) ;
       }
     else return -1.0 ; }

/**
 * teste si la souris est proche du point libre, retourne alors deplace = true
 */

00139   public boolean zone (int X, int Y)
  { return ((X >=  this.X - 2) && (X <= this.X + 2) && (Y >= this.Y - 2) && (Y <= this.Y + 2)) ; }

/**
 * Trace ou efface le point.
 */

00146   public void trace (Graphics g)
  { if (defini) { g.fillRect (X - 1, Y - 1, 3, 3);
                  if (Nom.length () != 0) g.drawString (Nom, X + 3, Y - 3); } }

/**
 * Trace ou efface uniquement le Nom du point.
 */

00154   public void traceNom (Graphics g)
  { if (defini && (Nom.length () != 0)) g.drawString (Nom, X + 3, Y - 3) ; }

/**
 * Redéfinit le point par des coordonnées (x, y).
 */

00161   public void point (double x, double y)
  { this.x = x ; this.y = y ; majXY () ; defini = true ; }

/**
 * Redéfinit le point.
 */

00168   public void point ()
  { majXY () ; }

}

Generated by  Doxygen 1.6.0   Back to index