import java.awt.*;

/** Cette classe implemente une aiguille dans une horloge */
public class Aiguille
{
  /** Coordonnees X,Y du triangle formant l'aiguille */
  private int x[], y[];
  /** Longueur de l'aiguille */
  public int longueur;
  /** Largeur de la base de l'aiguille */
  private int base;
  /** Couleur de l'aiguille */
  private Color color;
  /** Calculateur des cos/sin des positions X,Y */
  private TrigN trign;
  /** Nombre de tranches dans les 4 quadrants */
  private int nb_tranches;
  /** Le centre du cercle */
  private int x_center, y_center;

  /** Constructeur. En parametres:
      - la largeur de la base,
      - la couleur
      - le nombre de positions possibles dans le cadran
   */
  Aiguille(int base, Color color, int nb_tranches)
  {
  	this.base = base;
    this.color = color;
    this.nb_tranches = nb_tranches;

    x = new int[3];
    y = new int[3];
    trign = new TrigN(nb_tranches);
  }


  /** pour dessiner une aiguille */
  public void draw(Graphics g)
  {
    g.setColor(color);
    g.fillPolygon(x, y, 3);
  }

  /** calcule les coordonnees du triangle au temps donne */
  public void compute(int temps, int x_center, int y_center)
  {
  	double xy;
    int pixels;

    // la pointe de l'aiguille au bout de celle-ci

    x[0] = trign.x(temps, longueur) + x_center;
    y[0] = trign.y(temps, longueur) + y_center;

    // la bse de l'aiguille est a 90 degres alors on fait pivoter notre temps
    // le sens n'a pas d'importance

    temps += (nb_tranches / 4);

    // premier point de la base

    x[1] = trign.x(temps, base / 2);
    y[1] = trign.y(temps, base / 2);

    // le deuxieme point est à l'oppose du premier

    x[2] = - x[1];
    y[2] = - y[1];
    
    // on deplace au centre
    
    x[1] += x_center;       y[1] += y_center;
    x[2] += x_center;       y[2] += y_center;
    
    
  }

  /** Pour Unit test */
  public static void main(String arg[])
  {
    Aiguille aiguille;

    aiguille = new Aiguille(10, Color.black, 12);
    aiguille.longueur = 100;

    for(int i = 0; i < 12; i++)
    {
      aiguille.compute(i, 200, 100);
      System.out.println("[" + i + "] " +
                          aiguille.x[0] + "," + aiguille.y[0] + "  " +
                          aiguille.x[1] + "," + aiguille.y[1] + "  " +
                          aiguille.x[2] + "," + aiguille.y[2]);
    }
  }
}
