Calculer un angle entre 3 points en C

Résolu/Fermé
Maxoulamenace_8226 Messages postés 30 Date d'inscription mercredi 6 octobre 2021 Statut Membre Dernière intervention 17 septembre 2023 - 4 avril 2023 à 18:57
Pierr10 Messages postés 11625 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 18 mai 2024 - 4 avril 2023 à 20:09

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)

A voir également:

2 réponses

Pierr10 Messages postés 11625 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 18 mai 2024 4 909
4 avril 2023 à 19:38

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 !


1
Maxoulamenace_8226 Messages postés 30 Date d'inscription mercredi 6 octobre 2021 Statut Membre Dernière intervention 17 septembre 2023 3
4 avril 2023 à 19:54

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
1
Pierr10 Messages postés 11625 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 18 mai 2024 4 909
4 avril 2023 à 20:09

Ça marche !

C'est fait avec un produit scalaire.  C'est plus simple que ce que j’ai proposé. (Je suis un peu rouillé ! )

1