/**
* IUT de Nice / Departement informatique / Module M213
* Annee 2014_2015 - Package Geometrie
*
* Classe Point - Element de la modelisation du plan euclidien
*
* Edition A    : edition initiale  
*
*    @version 1.0.0	:	version initiale
*
* @author Alain Thuaire - Universite de Nice/IUT - Departement informatique
*
**/
package exercice1;

public class Point {
	private static final double EPSILON = 0.00001;
	private double abscisse;
	private double ordonnee;
	
	/**
	* Constructeur par defaut 
	**/
	public Point(){
		abscisse = 0.0;
		ordonnee = 0.0;
	}
	
	/**
	* Constructeur de copie 
	**/
	public Point(double x, double y){
		abscisse = x;
		ordonnee = y;
	}
	
	/*
	 * (non-Javadoc)
	 * @see java.lang.Object#clone()
	 */
	public Object clone(){
		return new Point (abscisse, ordonnee);
	}

	/**
	* Accesseurs de consultation
	* @return Retourne la coordonnee correspondante
	**/
	public double getAbscisse(){
		return abscisse;
	}
	
	public double getOrdonnee(){
		return ordonnee;
	}
	
	/**
	* Methode standard distance
	* @return Retourne la distance entre le point support et le point designe
	* par parametre 
	* @param Point
	**/  
	public double distanceP(Point p){
		double x1=abscisse;
		double x2=p.abscisse;
		double y1=ordonnee;
		double y2=p.ordonnee;
		return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	}
	
	/**
	 * affiche un point
     * @return chaine de caractre contenant les coordonnŽes du point
	 */
	public String toString(){
		return "("+abscisse+" , "+ordonnee+")";
	}
	
	
	
	/*
	 * Retourne le point projeté sur l'axe des abscisses
	 */
	public Point projX(){
		return new Point(this.abscisse, 0.0);
	}
	
	/*
	 * Retourne le point projeté sur l'axe des ordonnées
	 */
	public Point projY(){
		return new Point(0.0, this.ordonnee);
	}

	
	/*public static void main(String[] args){
		Point p1=new Point();
		Point p2=new Point(1.0, 1.0);
		Point p3=new Point(10, 20);
		Point p4=new Point(5.5, 3.75);
		
		System.out.println("Distance entre "+p1.toString()+" et "+p2.toString()+" = "+p1.distanceP(p2));
		System.out.println("Distance entre "+p3.toString()+" et "+p2.toString()+" = "+p3.distanceP(p2));
		System.out.println("Distance entre "+p4.toString()+" et "+p2.toString()+" = "+p4.distanceP(p2));
		System.out.println("Distance entre "+p3.toString()+" et "+p4.toString()+" = "+p3.distanceP(p4));
		
	}*/
}
