我知道 javascript 舍入错误相当棘手,但我想要一些建议。
减轻我的应用程序舍入误差的最佳方法是什么?我有一个立方体,应该是围绕一个大质量的轨道。立方体在每个轨道上都会获得大量的轨道动量,并且最终将在没有任何干预的情况下达到逃逸速度。
我需要一种轻量级的方法来防止这种情况发生。
我最好的选择是尝试找到一种方法来修复我的数字,还是我会更好地使用基于逻辑假设的错误纠正,即应该在哪里捏造它并将其放回它所属的位置?
我的物理功能在这里:
function physPosition(object, delta){
// Update Position
object.position.x += (object.velocity.x * delta) + (0.5*object.acceleration.x* (Math.pow(delta,2)));
object.position.y += (object.velocity.y * delta) + (0.5*object.acceleration.y*(Math.pow(delta,2)));
object.position.z += (object.velocity.z * delta) + (0.5*object.acceleration.z*(Math.pow(delta,2)));
// Update Velocity (acceleration)
object.velocity.x += object.acceleration.x * delta;
object.velocity.y += object.acceleration.y * delta;
object.velocity.z += object.acceleration.z * delta;
// Update Velocity (gravity)
object.velocity.x += object.gravity.x * delta;
object.velocity.y += object.gravity.y * delta;
object.velocity.z += object.gravity.z * delta;
// Update Rotation
object.rotation.x += object.spin.x * delta;
object.rotation.y += object.spin.y * delta;
object.rotation.z += object.spin.z * delta;
}
function physGravity(a, b){
var grav = new THREE.Vector3(0, 0, 0);
grav = grav.subVectors(a.position, b.position);
var r = grav.lengthSq();
var A = (G)*(b.mass)/(r);
grav = grav.normalize();
grav.multiplyScalar(-A);
a.gravity = grav;
}