public void paint(Graphics g) {
		double x, y;

		Point2D p1, p2, p3, p4;

		updateLocation();
		Graphics2D g2d = (Graphics2D) g;

		// Les 2 extremites du lien
		// Attention p1=(x2,y2), et p2=(x1,x2) !
		p1 = new Point2D.Double(x2, y2);
		p2 = new Point2D.Double(x1, y1);
		
		int hauteur = x1 - x2;
		int largeur = y1 - y2;

		//Pythagore, calcul de l'hypothenuse, donc la longueur de [P1,P2]
		double lt = Math.sqrt(hauteur * hauteur + largeur * largeur);


		//Calcul du point sur le segment [P1,P2] qui va servir de point de depart
		//pour faire les 2 rotations qui donneront les 2 extremites de la fleche
		//Ce point ne sera jamais affiche, il va juste servir pour les 2 rotations
		x = x1
		    + (x2 > x1 ? (Math.abs(x2 - x1) * 15) / lt : -(Math
								   .abs(x2 - x1) * 15)
		       / lt);
		y = y1
		    + (y2 > y1 ? (Math.abs(y2 - y1) * 15) / lt : -(Math
								   .abs(y2 - y1) * 15)
		       / lt);

		p4 = new Point2D.Double(x, y);

		//On trace la ligne entre les 2 elements du MPD
		Line2D l = new Line2D.Double(p1, p2);
		g2d.setColor(Color.RED);
		g2d.draw(l);

		AffineTransform affineTransform = new AffineTransform();

		//Rotation de PI/6 (30D) autour de x1,y1 (p2,point au bout de la fleche)
		affineTransform.setToRotation(Math.PI/6, x1, y1);

		//On applique la transformation au point p4, ce qui donne le point p3
		p3 = affineTransform.transform(p4, null);
		//On trace le premier bout de la fleche (entre l'extremite p2 et le point obtenu p3)
		l = new Line2D.Double(p2, p3);
		g2d.draw(l);

		//Rotation de -PI/6 (-30D) (dans l'autre sens donc) autour de x1,y1 
		//(p2,point au bout de la fleche)
		affineTransform.setToRotation(-Math.PI/6, x1, y1);

		//On applique la transformation au point p4, ce qui donne le point p3
		p3 = affineTransform.transform(p4, null);
		//On trace le premier bout de la fleche (entre l'extremite p2 et le point obtenu p3)
		l = new Line2D.Double(p2, p3);
		g2d.draw(l);

		if (this.doubleFleche) {
		    x = x2
			+ (x2 < x1 ? (Math.abs(x2 - x1) * 15) / lt : -(Math
								       .abs(x2 - x1) * 15)
			   / lt);
		    y = y2
			+ (y2 < y1 ? (Math.abs(y2 - y1) * 15) / lt : -(Math
								       .abs(y2 - y1) * 15)
			   / lt);

		    p4 = new Point2D.Double(x, y);
		    
		    affineTransform = new AffineTransform();
		    affineTransform.setToRotation(Math.PI/6, x2, y2);
		    
		    g2d.setColor(Color.RED);
		    p3 = affineTransform.transform(p4, null);
		    l = new Line2D.Double(p1, p3);
		    g2d.draw(l);
		    
		    affineTransform.setToRotation(-Math.PI/6, x2, y2);
		    
		    p3 = affineTransform.transform(p4, null);
		    l = new Line2D.Double(p1, p3);
		    g2d.draw(l);
		}
	}