浮点数在我的Java / JOGL(OpenGL for Java)程序中没有按预期计算。在绘制方法中,当每个帧(每秒60帧)被调用时,我尝试修改对象的位置。所有值都是浮点值。
float timeElapsed=((float)(System.currentTimeMillis()-lastdrawn))/1000;
float moveZ=(timeElapsed*momentumZ);
System.out.println(moveZ);
this.transformation.z+=moveZ;
System.out.println(this.transformation.z);
由于momentumZ
初始化为0.2f且this.transformation.z初始化为0.0f,因此对象应在z轴上移动。但我的输出是:
...
0.0024
2.58058064E8
0.0052
2.58058064E8
8.0000004E-4
2.58058064E8
0.001
2.58058064E8
因此,moveZ具有正确的值,但添加会使其混乱。如果我尝试每帧添加一个常量值,如0.05f,则对象移动。
这个错误在哪里?有什么关于花车我不知道吗?
答案 0 :(得分:3)
请注意:
2.58058064E8
是2.58亿。您正在添加
0.0024
,不会改变任何东西......
如果您不熟悉浮点数的这种表示,请查看此处的文章:
答案 1 :(得分:1)
我的猜测是你从lastDrawn == 0开始,这将首先构成一个超大号的moveZ。
编辑:您应该将 timeElapsed 转储到控制台,它应该让光线进入黑暗状态。