J'essaye d'écrire une fonction qui me dira si un angle se trouve dans 2 autres angles. Quand disons 'si un angle se trouve dans 2 autres angles' Je veux dire par exemple, si j'ai les 2 angles 0 et 90 alors 45 se situeraient entre ces angles mais -20 (ou 99) ne le feraient pas.Angle Hit Comparaison: Ne parvient pas à détecter le hit
Mon problème: Ma fonction ne semble pas détecter lorsque 2 angles se trouvent dans les 2 angles. Je ne suis pas sûr si ma fonction fonctionne aussi pour des angles négatifs?
Que dois-je changer pour que ma fonction fonctionne correctement?
bool is_angle_between(int target, int angle1, int angle2)
{
// Post: Return true if target lies between the 2 angles
int iTarget = (360 + (target % 360)) % 360;
int iAngle1 = (3600000 + angle1) % 360;
int iAngle2 = (3600000 + angle2) % 360;
if (iAngle1 < iAngle2)
if (iAngle1 <= iTarget && iTarget <= iAngle2)
return true;
else if (iAngle1 <= iTarget || iTarget <= iAngle2)
return true;
return false;
}
Y a-t-il un problème avec 'target> angle1 && target
Marlon
@StackUnderflow cela fonctionnera-t-il si angle1 est le plus grand angle? Les variables angle1 et angle2 ne sont pas triées par leur taille, elles peuvent avoir n'importe quelle valeur. Vous ne savez pas si cela fonctionnera pour is_angle_between (45, 90, 0) ;? –