package Model;

public class Vecteur {

	private float longueur,angle;
	private double x, y;

	/**
	 * Création d'un vecteur à partir de coordonnées
	 * @param x1, abscisse du premier point
	 * @param y1, ordonnée du premier point
	 * @param x2, abscisse du second point
	 * @param y2, ordonnée du second point
	 */
	public Vecteur(double x1,double y1,double x2,double y2){
		this.x=x2-x1;
		this.y=y2-y1;
		this.longueur=(float) Math.sqrt(x*x+y*y);
	}

	/**
	 * Création d'un vecteur à partir de deux points
	 * @param point1, le premier point
	 * @param point2, le second point
	 */
	public Vecteur(Point point1,Point point2){
		this.x=point1.getPoint().x-point2.getPoint().x;
		this.y=point1.getPoint().y-point1.getPoint().y;
		this.longueur=(float) Math.sqrt(x*x+y*y);
	}

	public void normalisation(){
		this.x=this.x/this.longueur;
		this.y=this.y/this.longueur;
	}

	/**
	 * Calcule l'angle entre le vecteur et le vecteur nul
	 */
	public void calculerAngle(){
		// Si le vecteur est orienté vers le haut
		if (y < 0) {
			this.setAngle((float) (Math.PI*0.5 + Math.acos(this.x)));
		// Si le vecteur est orienté vers le bas
		} else {
			this.setAngle((float) Math.acos(this.x));
		}
		// Si le vecteur est orienté vers la gauche
		if (x < 0) {
			this.setAngle(-this.angle);
		}
	}

	public float getAngle() {
		return angle;
	}

	public void setAngle(float angle) {
		this.angle = angle;
	}


}
