2010-09-11 50 views
0

我有这个浮球,它是一个旋转角度。包装数字?

Camera.roty += (float) diffx * 0.2; 

其中diff是鼠标位置的变化。

在OpenGL中,如果它超过360或低于0,它将包装它,但如果我想验证角度是否在0到180之间,我怎么能这样做呢?

感谢

+0

你能解释一下你所说的“捆绑”的意思是一点点? – 2010-09-11 00:50:23

+0

@ Thomasz-我认为他意味着365的角度会自动转换为5(或-90会转换为270)。实质上,'角度%360'。 – bta 2010-09-11 00:51:35

+0

你想验证哪个角度? 'diffx'?添加之前有'Camera.roty'吗?添加后? – bta 2010-09-11 00:53:16

回答

1

为了应对浮点值,你可以这样做:

angle = angle - floor(angle/360) * 360; 

这应该处理负值正确太(-1将被转换为359)。

+0

你的工作 – jmasterx 2010-09-11 01:09:26

0

根据由@bta评论:

为什么不使用:

angle % 180 

而且这个数字保存为一个角?

+0

Mod不工作时,它的neightive – jmasterx 2010-09-11 01:01:13

+0

你可以保存有关符号,abs()它,然后mod,在最后乘以符号的信息。 – 2010-09-11 01:02:36

2

如果我理解你的问题正确你基本上是在寻找这样的事情?:

float Wrap(const float Number, const float Max, const float Min) { 
if(Number > 0.0f) { 
    return fmod(Number, Max) + Min; 
} 
else { 
    return Max - fmod(abs(Number), Max) + Min; 
} 
} 
+0

只工作顺时针,如果数字<0,它不工作 – jmasterx 2010-09-11 01:06:01