Calculs pour les angles

Dafp -  
 dafp -
Bonjour,
Je suis en train de faire un programme qui à un moment calculs les angles selon les coordonnées de 3 pts.
Pourtant je n'arrive pas à trouver le bon resultat (ou en tout cas pas tout le temps).

donc je fais:

module1 = sqrt ((mov[a+4][i] - mov[a+2][i]) * (mov[a+4][i] - mov[a+2][i]) + (mov[a+5][i] - mov[a+3][i]) * (mov[a+5][i] - mov[a+3][i]));
module2 = sqrt ((mov[a][i] - mov[a+2][i]) * (mov[a][i] - mov[a+2][i]) + (mov[a+1][i]-mov[a+3][i]) * (mov[a+1][i]-mov[a+3][i]));
if (module1) { cos1 = (mov[a+4][i] - mov[a+2][i]) / module1; }
else { cos1 = 1; }
if (module2) { cos2 = (mov[a][i] - mov[a+2][i]) / module2; }
else { cos2 = 1; }

movangle[a][i] = ((acos(cos1) - acos(cos2))*360)/6.283185307;

sachant que:
a: xa
a+1: ya
a+2: xb
a+3: yb
a+4: xc
a+5: yc

je fais pour trouver mon angle, simple calcul qu'on pourrait ecrire:
(en radian) angle = cos^-1((xc-xb)/(racine((xc-xb)²+(yc-yb)²)))-cos^-1((xa-xb)/(racine((xa-xb)²+(ya-yb)²)))
que je convertis en degre

par exemple:
xa: 258
xb: 271
xc: 277
ya: 22
yb: 148
yc: 247

je devrais trouver 182° non ? pourquoi ai-je -9.35 alors ?

1 réponse

Manu
 
Bonjour,

je devrais trouver 182° non ? pourquoi ai-je -9.35 alors ?
Ce n'est pas si mauvais que ça, il suffit d'ajouter 180° (soit pi).

Regardez votre formule :
angle = cos^-1((xc-xb)/(racine((xc-xb)²+(yc-yb)²)))-cos^-1((xa-xb)/(­racine((xa-xb)²+(ya-yb)²)))
Elle ne tient pas compte du signe des ordonnées (précisément le signe de yc-yb et celui de ya-yb sont sans influence sur le résultat).

Petit rappel, le résultat d'un arccos est toujours de 0 à pi. Une fois sur deux ce n'est pas le résultat que vous attendez, il faut tenir compte du signe des ordonnées et s'il y a lieu prendre le complément à 2*pi. Mieux : utiliser un arctg à deux arguments.

Manu
2
dafp
 
Ce n'est pas si mauvais que ça, il suffit d'ajouter 180° (soit pi).
Oui mais comment savoir si j'en ai besoin, si j'ai l'angle negatif ?

Elle ne tient pas compte du signe des ordonnées (précisément le signe de yc-yb et celui de ya-yb sont sans influence sur le résultat).

Petit rappel, le résultat d'un arccos est toujours de 0 à pi. Une fois sur deux ce n'est pas le résultat que vous attendez, il faut tenir compte du signe des ordonnées et s'il y a lieu prendre le complément à 2*pi. Mieux : utiliser un arctg à deux arguments.


Qu'est ce que vous voulez dire par là ? faut-il que j'utilise aussi le calcul du sin, pour utiliser arctg ?
0
dafp > dafp
 
Merci pour votre réponse :D
0
dafp > dafp
 
comment savoir si je dois augmenter de 180 ou de 360 ?
0