/**
 * classe Point
 *
 * Modélise la figure 2D point par ses coordonnées et son nom
 *
 * @author Matthias Colin
 * @version 1.0 (5/03/2009)
 */
 public class Point {

	// champs
	 
	private int abscisse; // coordonnée horizontale entière du point
	private int ordonnee; // coordonnée verticale entière du point
	private String nom;

	// constructeurs

	/**
	 * constructeur Point à partir des ses coordonnées entières et de son nom
	 */
	public Point(String nomInit, int abscisseInit, 
			int ordonneeInit)
	{
		this.nom = nomInit;
		this.abscisse = abscisseInit;
		this.ordonnee = ordonneeInit;
	}

	// Accesseurs
	
	/**
	 * obtenir l'abscisse du point
	 * @return l'abscisse
	 */
	public int getAbscisse(){
		return this.abscisse;
	}

	/**
	 * obtenir l'ordonnée du point
	 * @return l'ordonnée
	 */
	public int getOrdonnee(){
		return this.ordonnee;
	}

	/**
	 * obtenir le nom du point
	 * @return le nom
	 */
	public String getNom(){
		return this.nom;
	}

	// Autres méthodes
	
	/**
	 * translater la figure
	 * @param deplacementHorizontal : partie horizontale du vecteur de déplacement
	 * @param deplacementVertical : partie verticale du vecteur de déplacement
	 */
	public void translater(int deplacementHorizontal,
			int deplacementVertical) 
	{
		this.abscisse = this.abscisse + deplacementHorizontal;
		this.ordonnee = this.ordonnee + deplacementVertical;	
	}

	/**
 	 * Distance de l'objet courant à un autre point
	 * @param autrePoint : le point dont on veut calculer la distance par rapport au point courant
 	 */ 
	public float distance(Point autrePoint) {
		return (float) Math.sqrt(
			Math.pow(this.getAbscisse() - autrePoint.getAbscisse(), 2)
			+ Math.pow(this.getOrdonnee() - autrePoint.getOrdonnee(),2));
	}

	/**
	 * Représentation de la figure sous la forme d'une chaîne de caractères
 	 * Format : nom(x, y)
 	 */ 
	public String toString() {
		return this.getNom() + "("  + this.getAbscisse() + ", "
			+ this.getOrdonnee() + ")";
	}

}
