Bonjour.
Je souhaiterais avoir l' angle entre deux vecteurs pour un programme j'ai donc testé la fonction anglebetwen mais je trouve bizarre les angles renvoyés .J'ai donc écris un autre programme pour tester la fonction angle mais c'est toujours aussi bizarre je ne comprends pas les données renvoyées pour les angles.
PVector v2,v1; void setup(){ size(400,400); } void draw(){ background(100); ellipse(width/2,height/2,380,380); v1 = new PVector(width/2,height/2); ellipse(v1.x,v1.y,20,20); v2=new PVector(mouseX,mouseY); ellipse(v2.x,v2.y,30,30); float angle = PVector.angleBetween(v1, v2); line(v1.x,v1.y,v2.x,v2.y); println(degrees(angle)); }
Hors ligne
Un PVector est un vecteur, pour faire ce que tu veux il faut amener le point d'origine au milieu de l'image c'est à dire aux coordonnées(width / 2, height / 2). Ensuite il faut se donner un vecteur de référence, ici j'ai pris le vecteur sur l'axe des x positif.
Comme la méthode renvoie des valeur absolue de l'angle entre deux vecteurs il faut bidouiller pour avoir la mesure entre 0 et 360.
Hors ligne
Bonjour.
Merci pour le programme et les explications j'ai bien l'angle que je souhaite;mais faut t'il mettre le vecteur obligatoirement au centre car cela pose un problème car je voulais faire un système par ex:v1=new Pvector(random(10,width)):v2=new PVector(random(10,height))et que v2 se déplace sur v1;en ayant la distance et l'angle mais d’après tes explications se ne serais pas possible .Sinon je suis obliger de faire: angle =atan2( v2.y-v1.y,v2.x-v1.x) ou y à t'il d'autres solutuions.
Merci.
Hors ligne
j'ai fais une erreur v1=PVector(10,width),random(10,height));
v2=PVector(10,width),random(10,height));
Hors ligne
J'ai pris comme origine le centre de l'image comme dans ton exemple, mais tu peux mettre ton référentiel où tu le souhaites :
Hors ligne
Remerciements pour les explications.
Hors ligne