Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包装一个号码?_C++_C_Opengl - Fatal编程技术网

C++ 包装一个号码?

C++ 包装一个号码?,c++,c,opengl,C++,C,Opengl,我有一个浮动,它是一个旋转角度 Camera.roty += (float) diffx * 0.2; 其中diff是鼠标位置的变化 在OpenGL中,如果角度超过360或低于0,它将对其进行包装,但是如果我想验证角度是否在0和180之间,我该如何进行包装 谢谢根据@bta的评论: 为什么不使用: angle % 180 并将该数字保存为角度?根据@bta的评论: 为什么不使用: angle % 180 并将该数字另存为角度?要处理浮点值,可以执行以下操作: angle = angle -

我有一个浮动,它是一个旋转角度

Camera.roty += (float) diffx * 0.2;
其中diff是鼠标位置的变化

在OpenGL中,如果角度超过360或低于0,它将对其进行包装,但是如果我想验证角度是否在0和180之间,我该如何进行包装


谢谢

根据@bta的评论:

为什么不使用:

angle % 180

并将该数字保存为角度?

根据@bta的评论:

为什么不使用:

angle % 180

并将该数字另存为角度?

要处理浮点值,可以执行以下操作:

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

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

要处理浮点值,可以执行以下操作:

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

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

如果我正确理解了你的问题,你基本上是在寻找类似的东西吗

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;
 }
}

如果我没弄错你的问题,你基本上是在找这样的东西

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;
 }
}

你能解释一下“环绕”是什么意思吗?@Thomasz-我想他的意思是365度的角度会自动转换为5度(或者-90度会转换为270度)。基本上是角度%360。您要验证哪个角度<代码>diffx<代码>摄影机.旋转在添加之前?加法后?但%只接受整数,而不是浮点加法后,camera.Rotx你能解释一下“环绕”是什么意思吗?@Thomasz-我想他的意思是365的角度会自动转换为5(或者-90会转换为270)。基本上是角度%360。您要验证哪个角度<代码>diffx<代码>摄影机.旋转在添加之前?加法后?但%只能是acceps整数,而不是float加法后,camera.rotxyou可以保存关于符号的信息,abs()it,然后是mod,最后是乘以符号。您可以保存关于符号的信息,abs()it,然后是mod,最后是乘以符号。