Calculer un angle entre 3 points en C
RésoluPierr10 Messages postés 13226 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je doit faire un code en C qui permet de calculer un angle entre 3 point dans un repère.
Je cherche un peut mais sans trouver mes connaissance en C étant très limiter j'ai commencer il n'y a pas longtemps,
et mes math c'est assez moyen.(je me trouve dans la partie en bas a gauche du repère donc avec les moins en ordonnée).
Merci d'avance a la ou les personnes qui pourront m'aider.
(Désoler pour les faute d'orthographe ce n'est pas mon fort non plus)
- Calculer un angle entre 3 points en C
- Comment calculer la moyenne sur excel - Guide
- Ai suite 3 - Télécharger - Optimisation
- Mettre des points sur une carte - Guide
- Comment insérer des points de suite sur word - Guide
- Picasa 3 - Télécharger - Albums photo
2 réponses
Bonjour,
Je ne connais rien à la programmation. Je pense quand même que ça doit être assez élémentaire. C'est le genre de truc qu'on peut programmer sur une simple calculatrice.
Pour moi c'est juste un calcul élémentaire de mathématiques, qu'il faudra traduire en langage de programmation.
Pour calculer l'angle, j'utiliserais le théorème d'Al-Kashi.
On calcule le cosinus de l'angle en fonction des longueurs des côtés du triangle constitué par les 3 points.
cos α = (b² + c² - a²)/2bc
Le calcul des longueurs des côtés en fonction des coordonnées des points est un peu fastidieux, mais sans difficultés.
L'avantage de cette méthode, est que suivant le signe de cos α, on saura si on a un angle aigu ou obtus.
Après il reste à traduire tout ça en C ; c'est ton boulot !
Merci beaucoup de m'avoir répondu,
Mais il faut que se soit a partir des coordonnées j'ai rouvert mon cahier de math é j'ai trouver cette solution:
a1 = x1 - x2 ; a2 = y1 - y2 ; b1 = x3 - x2 ; b2 = y3 - y2 ; a = sqrt ( (a1*a1) + (a2*a2) ); b = sqrt ( (b1*b1) + (b2*b2) ); if ( (a == 0.0) || (b == 0.0) ) return (0.0) ; cosinus = (a1*b1+a2*b2) / (a*b) ; t = acos ( cosinus ); t = t * 180.0 / pi ; angle = t