【发布时间】:2017-02-15 10:34:04
【问题描述】:
我需要一个函数来将角度(以度为单位)限制在任意范围[min,max]。这里有些例子:
彩色区域代表有效角度范围。
- 在图像 #1 中,ang 应该被限制在 max (-90)
- 在图像 #2 中,ang 应被限制为 min (135)
- 在图像 #3 中,ang 应该被限制在 min (135)
这是我目前所拥有的:
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;
}
我缺少的是函数angle_in_range(如果角度在范围内则为true,否则为false)。
确定角度是否在范围内的最简单方法是什么?
【问题讨论】:
-
这听起来类似于stackoverflow.com/questions/13652518/… ?至少是数学要求。