Angle d'un vecteur

De Centre de Ressources Numériques - Labomedia
Révision de 3 novembre 2017 à 20:40 par Mushussu (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Dans Processing, il existe la méthode heading() de PVector pour déterminer l'angle d'un vecteur, mais les valeurs ne sont pas intuitives. Voici deux méthodes permettant d'avoir des valeurs progressant de 0 à 2 * PI :

PVector v;

void setup( ) {
  size(400, 400);
  v = new PVector(0, 0);
  stroke(255, 0, 0);
  fill(255, 0, 0);
}

void draw() {
  background(255);
  text(degrees(angleHoraire(v.heading())), 20, 30);
  v.set(mouseX - width / 2, mouseY -height / 2);
  v.normalize();
  v.mult(100);
  translate(width / 2, height / 2);
  line(0, 0, v.x, v.y);
}

float angleTrigonometrique(float a) {
  if (a < 0) {
    return -a;
  } else {
    return TWO_PI - a;
  }
}

float angleHoraire(float a) {
  if (a < 0) {
    return TWO_PI + a;
  } else {
    return a;
  }
}