我有这个浮球,它是一个旋转角度。包装数字?
Camera.roty += (float) diffx * 0.2;
其中diff是鼠标位置的变化。
在OpenGL中,如果它超过360或低于0,它将包装它,但如果我想验证角度是否在0到180之间,我怎么能这样做呢?
感谢
我有这个浮球,它是一个旋转角度。包装数字?
Camera.roty += (float) diffx * 0.2;
其中diff是鼠标位置的变化。
在OpenGL中,如果它超过360或低于0,它将包装它,但如果我想验证角度是否在0到180之间,我怎么能这样做呢?
感谢
为了应对浮点值,你可以这样做:
angle = angle - floor(angle/360) * 360;
这应该处理负值正确太(-1将被转换为359)。
你的工作 – jmasterx 2010-09-11 01:09:26
根据由@bta评论:
为什么不使用:
angle % 180
而且这个数字保存为一个角?
Mod不工作时,它的neightive – jmasterx 2010-09-11 01:01:13
你可以保存有关符号,abs()它,然后mod,在最后乘以符号的信息。 – 2010-09-11 01:02:36
如果我理解你的问题正确你基本上是在寻找这样的事情?:
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,它不工作 – jmasterx 2010-09-11 01:06:01
你能解释一下你所说的“捆绑”的意思是一点点? – 2010-09-11 00:50:23
@ Thomasz-我认为他意味着365的角度会自动转换为5(或-90会转换为270)。实质上,'角度%360'。 – bta 2010-09-11 00:51:35
你想验证哪个角度? 'diffx'?添加之前有'Camera.roty'吗?添加后? – bta 2010-09-11 00:53:16