bonjour
j'aimerais savoir que renvoi la fonction
PVector v1 = new PVector (x,y);
PVector v2 = new PVector (x1,y1);
float t = PVector.angleBetween (v1, v2);
println(degrees(t));
car avec la machine je trouve un angle en tangente de 27.34 et la fonction me renvoi un angle de 69.27 pour les valeurs suivantes à quoi cela correspond t`'il?
float x,y,x1,y1,a,b,c;
void setup()
{
size(500,500);
x=10;
y=250;
fill(0,255,0);
rect(x,y,20,20);
x1=300;
y1=100;
fill(255,0,255);
rect(x1,y1,20,20);
bx-x1);
println(b);
ay-y1);
println(a);
c=sqrt((a*a)+(b*b));
println(c);
PVector v1 = new PVector (x,y);
PVector v2 = new PVector (x1,y1);
float t = PVector.angleBetween (v1, v2);
println(degrees(t));
}
Hors ligne
Bonjour,
Un vecteur est une "flèche" allant de l'origine (0, 0) au point indiquer dans le constructeur.
Donc angleBetween est l'angle entre deux vecteurs ayant comme point commun l'origine.
Tu peux voir le résultat dans le petit bricolage ci-joint :
PVector v1, v2; boolean selection; PVector distance; void setup() { size(400, 400); v1 = new PVector(300, 200); v2 = new PVector(300, 100); selection = false; } void draw() { background(255); fill(255); line(0, 0, v1.x, v1.y); ellipse(v1.x, v1.y, 10, 10); if (selection) { fill(255, 0, 0); } else { fill(0, 255, 0); } line(0, 0, v2.x, v2.y); ellipse(v2.x, v2.y, 10, 10); arc(0, 0, 100, 100, PVector.angleBetween(new PVector(1, 0), v1), PVector.angleBetween(new PVector(1, 0), v1) + PVector.angleBetween(v1, v2)); fill(0); text(degrees(PVector.angleBetween(v1, v2)),300, 380); } void mousePressed() { PVector souris = new PVector(mouseX, mouseY); distance = PVector.sub(souris, v2); if (distance.mag() < 10) { selection = true; } } void mouseDragged() { PVector souris = new PVector(mouseX, mouseY); if (selection) { v2 = PVector.sub(souris, distance); } } void mouseReleased() { selection = false; }
Hors ligne