包裹一个号码?

时间:2010-09-11 00:47:16

标签: c++ c opengl

我有这个浮动角度。

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

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

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

由于

3 个答案:

答案 0 :(得分: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;
 }
}

答案 1 :(得分:1)

要处理浮点值,您可以这样做:

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

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

答案 2 :(得分:0)

根据@bta的评论:

为什么不使用:

angle % 180

并将该数字保存为角度?