]>
git.r.bdr.sh - rbdr/lissajous/blob - lib/systems/lissajous_position_updater.js
0f5792dffd26dcae307cb48d0b9e6d4ecd8c3689
1 import { System
} from '@serpentity/serpentity';
2 import LissajousCurve
from '../nodes/lissajous_curve';
6 kPeriod: Math
.PI
* 12000000
9 export default class WebGLRenderer
extends System
{
18 this.curves
= engine
.getNodes(LissajousCurve
);
24 this.curves
= undefined;
25 this.time
= undefined;
30 this.time
= (this.time
+ dt
/ 100) % internals
.kPeriod
;
32 for (const curve
of this.curves
) {
33 curve
.position
.x
= this._getPosition(internals
.kAmplitude
, curve
.frequency
.a
, this.time
, 0);
34 curve
.position
.y
= this._getPosition(internals
.kAmplitude
, curve
.frequency
.b
, this.time
, 0);
35 curve
.position
.z
= this._getPosition(internals
.kAmplitude
, curve
.frequency
.c
, this.time
, 0);
40 _getPosition(amplitude
, frequency
, time
, phaseShift
) {
42 return amplitude
* Math
.sin(frequency
* time
+ phaseShift
);