J'ai besoin d'une fonction pour réduire un angle (en degrés) dans une plage arbitraire. [min,max]
. Voici quelques exemples :
Les zones colorées représentent la plage d'angle valide.
-
Dans l'image n° 1, ang doit être fixé à max (-90)
-
Dans l'image n°2, ang doit être fixé à min (135)
-
Dans l'image n° 3, ang doit être fixé à min (135)
Voici ce que j'ai pour l'instant :
static float clamp_angle(float ang,float min,float max)
{
ang = normalize_angle(ang); // normalize_angle transforms angle into [-180,180) range
min = normalize_angle(min);
max = normalize_angle(max);
if(angle_in_range(ang,min,max) == false)
{
if(abs(get_angle_difference(ang,min)) < abs(get_angle_difference(ang,max))
ang = min; // Clamp to min if we're closer to min than max
else
ang = max;
}
return ang;
}
Ce qui me manque, c'est la fonction angle_in_range
( true
si l'angle est compris dans l'intervalle, sinon false
).
Quel serait le moyen le plus simple de déterminer si l'angle est compris ou non dans l'intervalle ?