我的场景中有一个立方体,我想以特定的起始速度和给定的时间间隔旋转它。
此外,立方体的结束角度应与开始角度相同。因此,我想允许时间间隔有± 5% 的偏差。
这是我目前的状态:http: //jsfiddle.net/5NWab/1/。
不要怀疑目前正在工作。如果我更改时间间隔,例如通过“3000”:http: //jsfiddle.net/5NWab/2/ ,就会出现问题。
我的立方体的基本move()方法:
Reel.prototype.move = function (delta) {
if (this.velocity < 0 && this.mesh.rotation.x == 0) {
return false;
}
// Create smooth end rotation
if (this.velocity < 0 && this.mesh.rotation.x != 0) {
this.mesh.rotation.x += Math.abs(delta * this.speedUp * 0.5 * this.timeSpan);
if (Math.abs(this.mesh.rotation.x - 2 * Math.PI) < 0.1) {
this.mesh.rotation.x = 0;
}
}
else {
this.mesh.rotation.x += delta * this.velocity;
this.time -= delta;
this.velocity = this.speedUp * this.time;
}
}
问题是我想不出一个解决方案或方法来完成我的主题。delta
如果我的变量是恒定
的,它就不会那么复杂了。
它应该在附近, 60fps = 1000/60
因为我正在使用requestAnimationFrame()
.
我还发现了这个问题,它可以帮助找到解决方案。
我认为代码应该要么
在到达实际终点之前减慢速度。 如果最终角度略大于所需(开始)角度,
则应该是这种情况。或应在达到实际终点后加快转速。 如果最终角度比所需(开始)角度小一点
,则应该是这种情况。
但是,当角度与所需角度(即 180° 或 PI)相差一个半圆时是什么情况?
为了澄清我的问题,以下是我的已知和未知数:
已知:
- 起始速度
- 时间间隔
- 起始角度(通常为 0)
我希望立方体在旋转结束时具有相同的起始角度/位置。因为 FPS 计数不是恒定的,我必须缩短或延长时间间隔才能让立方体进入所需位置。