X-Git-Url: https://git.r.bdr.sh/rbdr/lissajous/blobdiff_plain/6a87c2530865b5e18f70b71b456f43e72702c1c6..HEAD:/lib/systems/lissajous_position_updater.js diff --git a/lib/systems/lissajous_position_updater.js b/lib/systems/lissajous_position_updater.js index 39b151a..030d9ba 100644 --- a/lib/systems/lissajous_position_updater.js +++ b/lib/systems/lissajous_position_updater.js @@ -6,6 +6,12 @@ const internals = { kPeriod: Math.PI * 12000000 }; +/** + * Calculates the lissajous curve over time + * NOTE: This shouldn't store data, I should have a different entity for + * the actual drawable vertices. Either put the storage in the curve, or + * create a separate entity. + */ export default class WebGLRenderer extends System { constructor() { @@ -30,9 +36,9 @@ export default class WebGLRenderer extends System { this.time = (this.time + dt / 500) % internals.kPeriod; for (const curve of this.curves) { - curve.position.x = this._getPosition(curve.amplitude.a, curve.frequency.a, this.time, 0); - curve.position.y = this._getPosition(curve.amplitude.b, curve.frequency.b, this.time, 0); - curve.position.z = this._getPosition(curve.amplitude.c, curve.frequency.c, this.time, 0); + curve.position.x = this._getPosition(curve.amplitude.a, curve.frequency.a, this.time, curve.phase.a); + curve.position.y = this._getPosition(curve.amplitude.b, curve.frequency.b, this.time, curve.phase.b); + curve.position.z = this._getPosition(curve.amplitude.c, curve.frequency.c, this.time, curve.phase.c); } }