Soit 8 angles élémentaires 0,45,90,135,180,225,270,315.
Je souhaite arrondir l'angle issu d'un calcul vers l'angle élémentaire le plus proche.
Pour cela je fais comme ci dessous :
Je fais du transtypage car l'opérateur modulo (%) ne veut que des entiers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 a = atan2(dty,dtx); int ad=(int) (a*180/M_PI); ad=(ad+360) % 360; float nofrm= (float) ad / 45; fmx = ((int) Arrondit(nofrm)) % 8;
Mieux vaut faire ce transtypage ou créer une fonction de comparaison permettant selon l'intervalle dans lequel se trouve l'angle de retourner l'angle élémentaire ?
Ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (angle>0 && angle <23) return 0; if (angle>22 && angle <67) return 45; .....etc...........
Partager