pocket-physics
Version:
Verlet physics extracted from pocket-ces demos
27 lines (26 loc) • 990 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.solveGravitation = void 0;
const v2_1 = require("./v2");
const accel1 = (0, v2_1.v2)();
function solveGravitation(p1, p1mass, p2, p2mass, gravityConstant = 0.99) {
// handle either obj not having mass
if (p1mass <= 0 || p2mass <= 0)
return;
let mag;
let factor;
const diffx = p2.cpos.x - p1.cpos.x;
const diffy = p2.cpos.y - p1.cpos.y;
(0, v2_1.set)(accel1, diffx, diffy);
mag = (0, v2_1.magnitude)(accel1);
// Prevent divide by zero.
mag = mag === 0 ? 1 : mag;
// Newton's Law of Universal Gravitation -- Vector Form!
factor = gravityConstant * ((p1mass * p2mass) / (mag * mag));
// scale by gravity acceleration
(0, v2_1.normalize)(accel1, accel1);
(0, v2_1.scale)(accel1, accel1, factor);
// add the acceleration from gravity to p1 accel
(0, v2_1.add)(p1.acel, p1.acel, accel1);
}
exports.solveGravitation = solveGravitation;