我需要一个将角度(以度数为单位)限制在任意范围[min,max]
的功能。以下是一些示例: 将夹角限制在任意范围
彩色区域表示有效的角度范围。
- 在图像#1,昂应钳位到最大(-90)
- 在图像#2,ANG应钳位到分钟(135)
- 在图像#3,ANG应钳位到分钟(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
)。
确定角度是否在范围内的最简单方法是什么?
这听起来类似于http://stackoverflow.com/questions/13652518/efficiently-find-points-圈内圈?至少数学要求。 – Zze