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,最后是乘以符号。