Add start of ship rendering
This commit is contained in:
parent
4a253b0184
commit
704c82838a
15 changed files with 199 additions and 13 deletions
26
js/world/body.mjs
Normal file
26
js/world/body.mjs
Normal file
|
@ -0,0 +1,26 @@
|
|||
import {GRAVITATIONAL_CONSTANT as G} from '../consts.mjs';
|
||||
|
||||
export default class Body {
|
||||
constructor(x, y, mass) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.r = 0;
|
||||
this.xvel = 0;
|
||||
this.yvel = 0;
|
||||
this.rvel = 0;
|
||||
this.mass = mass;
|
||||
}
|
||||
|
||||
tickGravity(bodies) {
|
||||
bodies.forEach(b => {
|
||||
let force = b.mass / this.mass / (distanceTo(b) ** 2) * G;
|
||||
let angle = Math.atan2(b.y - this.y, b.x - this.x);
|
||||
this.xvel += Math.cos(angle) * force;
|
||||
this.yvel += Math.sin(angle) * force;
|
||||
});
|
||||
}
|
||||
|
||||
distanceTo(body) {
|
||||
return Math.sqrt(((body.x - this.x) ** 2) + ((body.y - this.y) ** 2));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue