UNPKG

pocket-physics

Version:

Verlet physics extracted from pocket-ces demos

27 lines (26 loc) 990 B
"use strict"; 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;