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