@guinetik/gcanvas 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/demos/fluid-simple.html +22 -0
  2. package/demos/fluid.html +37 -0
  3. package/demos/index.html +2 -0
  4. package/demos/js/blob.js +18 -5
  5. package/demos/js/fluid-simple.js +253 -0
  6. package/demos/js/fluid.js +527 -0
  7. package/demos/js/tde/accretiondisk.js +64 -11
  8. package/demos/js/tde/blackholescene.js +2 -2
  9. package/demos/js/tde/config.js +2 -2
  10. package/demos/js/tde/index.js +152 -27
  11. package/demos/js/tde/lensedstarfield.js +32 -25
  12. package/demos/js/tde/tdestar.js +78 -98
  13. package/demos/js/tde/tidalstream.js +23 -7
  14. package/docs/README.md +230 -222
  15. package/docs/api/FluidSystem.md +173 -0
  16. package/docs/concepts/architecture-overview.md +204 -204
  17. package/docs/concepts/rendering-pipeline.md +279 -279
  18. package/docs/concepts/two-layer-architecture.md +229 -229
  19. package/docs/fluid-dynamics.md +97 -0
  20. package/docs/getting-started/first-game.md +354 -354
  21. package/docs/getting-started/installation.md +175 -157
  22. package/docs/modules/collision/README.md +2 -2
  23. package/docs/modules/fluent/README.md +6 -6
  24. package/docs/modules/game/README.md +303 -303
  25. package/docs/modules/isometric-camera.md +2 -2
  26. package/docs/modules/isometric.md +1 -1
  27. package/docs/modules/painter/README.md +328 -328
  28. package/docs/modules/particle/README.md +3 -3
  29. package/docs/modules/shapes/README.md +221 -221
  30. package/docs/modules/shapes/base/euclidian.md +123 -123
  31. package/docs/modules/shapes/base/shape.md +262 -262
  32. package/docs/modules/shapes/base/transformable.md +243 -243
  33. package/docs/modules/state/README.md +2 -2
  34. package/docs/modules/util/README.md +1 -1
  35. package/docs/modules/util/camera3d.md +3 -3
  36. package/docs/modules/util/scene3d.md +1 -1
  37. package/package.json +3 -1
  38. package/readme.md +19 -5
  39. package/src/collision/collision.js +75 -0
  40. package/src/game/index.js +2 -1
  41. package/src/game/pipeline.js +3 -3
  42. package/src/game/systems/FluidSystem.js +835 -0
  43. package/src/game/systems/index.js +11 -0
  44. package/src/game/ui/button.js +39 -18
  45. package/src/game/ui/cursor.js +14 -0
  46. package/src/game/ui/fps.js +12 -4
  47. package/src/game/ui/index.js +2 -0
  48. package/src/game/ui/stepper.js +549 -0
  49. package/src/game/ui/theme.js +121 -0
  50. package/src/game/ui/togglebutton.js +9 -3
  51. package/src/game/ui/tooltip.js +11 -4
  52. package/src/math/fluid.js +507 -0
  53. package/src/math/index.js +2 -0
  54. package/src/mixins/anchor.js +17 -7
  55. package/src/motion/tweenetik.js +16 -0
  56. package/src/shapes/index.js +1 -0
  57. package/src/util/camera3d.js +218 -12
  58. package/types/fluent.d.ts +361 -0
  59. package/types/game.d.ts +303 -0
  60. package/types/index.d.ts +144 -5
  61. package/types/math.d.ts +361 -0
  62. package/types/motion.d.ts +271 -0
  63. package/types/particle.d.ts +373 -0
  64. package/types/shapes.d.ts +107 -9
  65. package/types/util.d.ts +353 -0
  66. package/types/webgl.d.ts +109 -0
  67. package/disk_example.png +0 -0
  68. package/tde.png +0 -0
package/types/math.d.ts CHANGED
@@ -266,3 +266,364 @@ export function generatePenroseTilingPixels(
266
266
  height?: number,
267
267
  options?: PenroseTilingOptions
268
268
  ): Uint8ClampedArray;
269
+
270
+ // ==========================================================================
271
+ // Tensor (Rank-2 Tensor for General Relativity)
272
+ // ==========================================================================
273
+
274
+ /** Tensor creation options */
275
+ export interface TensorOptions {
276
+ /** Name of the tensor (e.g., 'Schwarzschild') */
277
+ name?: string;
278
+ /** Metric signature (e.g., [-1, 1, 1, 1]) */
279
+ signature?: number[];
280
+ /** Coordinate names (e.g., ['t', 'r', 'θ', 'φ']) */
281
+ coordinates?: string[];
282
+ }
283
+
284
+ /**
285
+ * Rank-2 Tensor class for general relativity calculations.
286
+ * Provides immutable tensor operations following the Complex class pattern.
287
+ *
288
+ * @example
289
+ * const g = Tensor.schwarzschild(10, 2);
290
+ * console.log(g.get(0, 0)); // g_tt component
291
+ */
292
+ export class Tensor {
293
+ /** Tensor dimension (n for n×n tensor) */
294
+ readonly dimension: number;
295
+ /** Tensor name */
296
+ readonly name: string;
297
+ /** Metric signature */
298
+ readonly signature: number[] | null;
299
+ /** Coordinate names */
300
+ readonly coordinates: string[] | null;
301
+
302
+ /**
303
+ * Create a new rank-2 tensor from a 2D array of components.
304
+ * @param components - 2D array of tensor components
305
+ * @param options - Optional metadata
306
+ */
307
+ constructor(components: number[][], options?: TensorOptions);
308
+
309
+ // Static Factory Methods
310
+ /** Create a Minkowski (flat spacetime) metric tensor */
311
+ static minkowski(): Tensor;
312
+
313
+ /**
314
+ * Create a Schwarzschild metric tensor at a given radial position.
315
+ * @param r - Radial coordinate (must be > rs)
316
+ * @param rs - Schwarzschild radius (2GM/c²)
317
+ * @param theta - Polar angle (default: equatorial plane)
318
+ */
319
+ static schwarzschild(r: number, rs: number, theta?: number): Tensor;
320
+
321
+ /** Create contravariant Schwarzschild metric */
322
+ static schwarzschildContravariant(r: number, rs: number, theta?: number): Tensor;
323
+
324
+ /**
325
+ * Create a Kerr metric tensor (rotating black hole).
326
+ * @param r - Radial coordinate
327
+ * @param theta - Polar angle
328
+ * @param M - Mass parameter
329
+ * @param a - Spin parameter (0 ≤ a ≤ M)
330
+ */
331
+ static kerr(r: number, theta: number, M: number, a: number): Tensor;
332
+
333
+ /** Create contravariant Kerr metric */
334
+ static kerrContravariant(r: number, theta: number, M: number, a: number): Tensor;
335
+
336
+ /** Calculate Kerr horizon radius */
337
+ static kerrHorizonRadius(M: number, a: number, inner?: boolean): number;
338
+
339
+ /** Calculate ergosphere radius */
340
+ static kerrErgosphereRadius(M: number, a: number, theta: number): number;
341
+
342
+ /** Calculate ISCO radius for Kerr metric */
343
+ static kerrISCO(M: number, a: number, prograde?: boolean): number;
344
+
345
+ /** Calculate frame-dragging angular velocity */
346
+ static kerrFrameDraggingOmega(r: number, theta: number, M: number, a: number): number;
347
+
348
+ /** Calculate Kerr effective potential */
349
+ static kerrEffectivePotential(M: number, a: number, E: number, L: number, r: number): number;
350
+
351
+ /** Create a diagonal tensor */
352
+ static diagonal(values: number[], options?: TensorOptions): Tensor;
353
+
354
+ /** Create an identity tensor */
355
+ static identity(n?: number): Tensor;
356
+
357
+ /** Create a zero tensor */
358
+ static zero(n?: number): Tensor;
359
+
360
+ // Component Access
361
+ /** Get a component at indices */
362
+ get(i: number, j: number): number;
363
+
364
+ /** Return new tensor with component changed */
365
+ set(i: number, j: number, value: number): Tensor;
366
+
367
+ /** Get diagonal components */
368
+ getDiagonal(): number[];
369
+
370
+ // Tensor Operations
371
+ /** Add another tensor */
372
+ add(other: Tensor): Tensor;
373
+
374
+ /** Subtract another tensor */
375
+ subtract(other: Tensor): Tensor;
376
+
377
+ /** Multiply by scalar */
378
+ scale(scalar: number): Tensor;
379
+
380
+ /** Matrix multiply with another tensor */
381
+ multiply(other: Tensor): Tensor;
382
+
383
+ /** Transpose tensor */
384
+ transpose(): Tensor;
385
+
386
+ /** Compute inverse */
387
+ inverse(): Tensor;
388
+
389
+ // Derived Quantities
390
+ /** Compute determinant */
391
+ determinant(): number;
392
+
393
+ /** Compute trace */
394
+ trace(): number;
395
+
396
+ /** Check if diagonal */
397
+ isDiagonal(tolerance?: number): boolean;
398
+
399
+ /** Check if symmetric */
400
+ isSymmetric(tolerance?: number): boolean;
401
+
402
+ // GR Utilities
403
+ /**
404
+ * Compute Christoffel symbols for a metric.
405
+ * @param metricFn - Function returning metric at position
406
+ * @param position - Position [t, r, θ, φ]
407
+ * @param delta - Step size for numerical differentiation
408
+ */
409
+ static christoffel(
410
+ metricFn: (position: number[]) => Tensor,
411
+ position: number[],
412
+ delta?: number
413
+ ): number[][][];
414
+
415
+ /** Analytical Christoffel symbols for Schwarzschild */
416
+ static schwarzschildChristoffel(r: number, rs: number, theta: number): number[][][];
417
+
418
+ /** Compute effective potential for Schwarzschild geodesics */
419
+ static effectivePotential(M: number, L: number, r: number): number;
420
+
421
+ /** ISCO radius for Schwarzschild */
422
+ static iscoRadius(rs: number): number;
423
+
424
+ /** Photon sphere radius */
425
+ static photonSphereRadius(rs: number): number;
426
+
427
+ // Display
428
+ /** Get flat array of components */
429
+ toArray(): number[];
430
+
431
+ /** Get 2D array copy */
432
+ toMatrix(): number[][];
433
+
434
+ /** String representation */
435
+ toString(precision?: number): string;
436
+
437
+ /** LaTeX representation */
438
+ toLatex(precision?: number): string;
439
+ }
440
+
441
+ // ==========================================================================
442
+ // General Relativity (gr.js)
443
+ // ==========================================================================
444
+
445
+ /**
446
+ * Calculate gravitational lensing deflection.
447
+ * @param b - Impact parameter
448
+ * @param M - Mass
449
+ * @returns Deflection angle in radians
450
+ */
451
+ export function gravitationalLensingAngle(b: number, M: number): number;
452
+
453
+ /**
454
+ * Calculate time dilation factor.
455
+ * @param r - Radial coordinate
456
+ * @param rs - Schwarzschild radius
457
+ * @returns Time dilation factor (0-1)
458
+ */
459
+ export function timeDilationFactor(r: number, rs: number): number;
460
+
461
+ /**
462
+ * Calculate gravitational redshift.
463
+ * @param r - Radial coordinate
464
+ * @param rs - Schwarzschild radius
465
+ * @returns Redshift z
466
+ */
467
+ export function gravitationalRedshift(r: number, rs: number): number;
468
+
469
+ // ==========================================================================
470
+ // Orbital Mechanics (orbital.js)
471
+ // ==========================================================================
472
+
473
+ /** Orbital state vector */
474
+ export interface OrbitalState {
475
+ x: number;
476
+ y: number;
477
+ z: number;
478
+ vx: number;
479
+ vy: number;
480
+ vz: number;
481
+ }
482
+
483
+ /** Keplerian orbital elements */
484
+ export interface OrbitalElements {
485
+ a: number; // Semi-major axis
486
+ e: number; // Eccentricity
487
+ i: number; // Inclination
488
+ Omega: number; // Right ascension of ascending node
489
+ omega: number; // Argument of periapsis
490
+ nu: number; // True anomaly
491
+ }
492
+
493
+ /**
494
+ * Calculate orbital velocity at radius.
495
+ * @param r - Orbital radius
496
+ * @param M - Central mass
497
+ * @returns Orbital velocity
498
+ */
499
+ export function orbitalVelocity(r: number, M: number): number;
500
+
501
+ /**
502
+ * Calculate orbital period.
503
+ * @param a - Semi-major axis
504
+ * @param M - Central mass
505
+ * @returns Orbital period
506
+ */
507
+ export function orbitalPeriod(a: number, M: number): number;
508
+
509
+ /**
510
+ * Convert Keplerian elements to state vector.
511
+ * @param elements - Orbital elements
512
+ * @param mu - Gravitational parameter
513
+ */
514
+ export function elementsToState(elements: OrbitalElements, mu: number): OrbitalState;
515
+
516
+ /**
517
+ * Propagate orbit using Runge-Kutta.
518
+ * @param state - Current state
519
+ * @param dt - Time step
520
+ * @param mu - Gravitational parameter
521
+ */
522
+ export function propagateOrbit(state: OrbitalState, dt: number, mu: number): OrbitalState;
523
+
524
+ // ==========================================================================
525
+ // Quantum Mechanics (quantum.js)
526
+ // ==========================================================================
527
+
528
+ /**
529
+ * Gaussian wave packet.
530
+ * @param x - Position
531
+ * @param x0 - Center position
532
+ * @param k0 - Central wavenumber
533
+ * @param sigma - Width parameter
534
+ * @param t - Time
535
+ * @returns Complex amplitude {re, im}
536
+ */
537
+ export function gaussianWavePacket(
538
+ x: number,
539
+ x0: number,
540
+ k0: number,
541
+ sigma: number,
542
+ t: number
543
+ ): { re: number; im: number };
544
+
545
+ /**
546
+ * Probability density |Ψ|².
547
+ * @param psi - Wave function value {re, im}
548
+ */
549
+ export function probabilityDensity(psi: { re: number; im: number }): number;
550
+
551
+ /**
552
+ * Particle in a box wave function.
553
+ * @param x - Position (0 to L)
554
+ * @param L - Box length
555
+ * @param n - Quantum number
556
+ */
557
+ export function particleInBox(x: number, L: number, n: number): number;
558
+
559
+ /**
560
+ * Harmonic oscillator wave function.
561
+ * @param x - Position
562
+ * @param n - Energy level
563
+ * @param omega - Angular frequency
564
+ * @param m - Mass
565
+ */
566
+ export function harmonicOscillator(x: number, n: number, omega: number, m: number): number;
567
+
568
+ // ==========================================================================
569
+ // Heat Transfer (heat.js)
570
+ // ==========================================================================
571
+
572
+ /**
573
+ * Calculate heat transfer between two objects.
574
+ * @param T1 - Temperature of object 1
575
+ * @param T2 - Temperature of object 2
576
+ * @param k - Thermal conductivity
577
+ * @param dt - Time step
578
+ */
579
+ export function heatTransfer(T1: number, T2: number, k: number, dt: number): number;
580
+
581
+ /**
582
+ * Calculate buoyancy force.
583
+ * @param temperature - Object temperature
584
+ * @param ambientTemp - Ambient temperature
585
+ * @param coefficient - Buoyancy coefficient
586
+ */
587
+ export function buoyancyForce(temperature: number, ambientTemp: number, coefficient: number): number;
588
+
589
+ /**
590
+ * Temperature decay toward ambient.
591
+ * @param temp - Current temperature
592
+ * @param ambientTemp - Ambient temperature
593
+ * @param rate - Decay rate
594
+ * @param dt - Time step
595
+ */
596
+ export function temperatureDecay(temp: number, ambientTemp: number, rate: number, dt: number): number;
597
+
598
+ // ==========================================================================
599
+ // Fluid Dynamics (fluid.js)
600
+ // ==========================================================================
601
+
602
+ /**
603
+ * Calculate viscosity drag force.
604
+ * @param velocity - Velocity vector
605
+ * @param viscosity - Fluid viscosity
606
+ */
607
+ export function viscosityDrag(velocity: { x: number; y: number }, viscosity: number): { x: number; y: number };
608
+
609
+ /**
610
+ * Calculate surface tension force.
611
+ * @param curvature - Surface curvature
612
+ * @param tension - Surface tension coefficient
613
+ */
614
+ export function surfaceTension(curvature: number, tension: number): number;
615
+
616
+ /**
617
+ * Calculate Reynolds number.
618
+ * @param velocity - Flow velocity
619
+ * @param length - Characteristic length
620
+ * @param viscosity - Kinematic viscosity
621
+ */
622
+ export function reynoldsNumber(velocity: number, length: number, viscosity: number): number;
623
+
624
+ /**
625
+ * Navier-Stokes pressure term.
626
+ * @param density - Fluid density
627
+ * @param pressure - Pressure
628
+ */
629
+ export function pressureGradient(density: number, pressure: number): number;
package/types/motion.d.ts CHANGED
@@ -676,3 +676,274 @@ export class Motion {
676
676
  state?: MotionState | null
677
677
  ): MotionResult;
678
678
  }
679
+
680
+ // ==========================================================================
681
+ // Standalone Motion Functions (V1 API)
682
+ // ==========================================================================
683
+
684
+ /**
685
+ * Standalone bezier curve motion animation.
686
+ * @see Motion.bezier for class method equivalent
687
+ */
688
+ export function bezierV1(
689
+ p0: [number, number],
690
+ p1: [number, number],
691
+ p2: [number, number],
692
+ p3: [number, number],
693
+ elapsedTime: number,
694
+ duration: number,
695
+ loop?: boolean,
696
+ yoyo?: boolean,
697
+ easingFn?: EasingFunction | null,
698
+ callbacks?: MotionCallbacks,
699
+ state?: MotionState | null
700
+ ): MotionPositionResult;
701
+
702
+ /**
703
+ * Standalone bounce animation.
704
+ * @see Motion.bounce for class method equivalent
705
+ */
706
+ export function bounceV1(
707
+ maxHeight: number,
708
+ groundY: number,
709
+ bounceCount: number,
710
+ elapsedTime: number,
711
+ duration: number,
712
+ loop?: boolean,
713
+ easingFn?: EasingFunction | null,
714
+ callbacks?: MotionCallbacks,
715
+ state?: MotionState | null
716
+ ): MotionValueResult;
717
+
718
+ /**
719
+ * Standalone floating motion animation.
720
+ * @see Motion.float for class method equivalent
721
+ */
722
+ export function floatV1(
723
+ target: PositionTarget,
724
+ elapsedTime: number,
725
+ duration: number,
726
+ speed: number,
727
+ randomness: number,
728
+ radius: number,
729
+ loop?: boolean,
730
+ easingFn?: EasingFunction | null,
731
+ callbacks?: MotionCallbacks,
732
+ state?: MotionState | null
733
+ ): MotionPositionResult;
734
+
735
+ /**
736
+ * Standalone path following animation.
737
+ * @see Motion.follow for class method equivalent
738
+ */
739
+ export function followPath(
740
+ points: [number, number][],
741
+ closed: boolean,
742
+ elapsedTime: number,
743
+ duration: number,
744
+ loop?: boolean,
745
+ easingFn?: EasingFunction | null,
746
+ callbacks?: MotionCallbacks,
747
+ state?: MotionState | null
748
+ ): MotionPositionResult;
749
+
750
+ /**
751
+ * Standalone orbital motion animation.
752
+ * @see Motion.orbit for class method equivalent
753
+ */
754
+ export function orbitV1(
755
+ centerX: number,
756
+ centerY: number,
757
+ radiusX: number,
758
+ radiusY: number,
759
+ startAngle: number,
760
+ elapsedTime: number,
761
+ duration: number,
762
+ loop?: boolean,
763
+ clockwise?: boolean,
764
+ easingFn?: EasingFunction | null,
765
+ callbacks?: MotionCallbacks,
766
+ state?: MotionState | null
767
+ ): MotionPositionResult;
768
+
769
+ /**
770
+ * Standalone oscillation animation.
771
+ * @see Motion.oscillate for class method equivalent
772
+ */
773
+ export function oscillateV1(
774
+ min: number,
775
+ max: number,
776
+ elapsedTime: number,
777
+ duration: number,
778
+ loop?: boolean,
779
+ easingFn?: EasingFunction | null,
780
+ callbacks?: MotionCallbacks,
781
+ state?: MotionState | null
782
+ ): MotionValueResult;
783
+
784
+ /**
785
+ * Standalone parabolic arc animation.
786
+ * @see Motion.parabolic for class method equivalent
787
+ */
788
+ export function parabolicV1(
789
+ start: number,
790
+ peak: number,
791
+ end: number,
792
+ elapsedTime: number,
793
+ duration: number,
794
+ loop?: boolean,
795
+ yoyo?: boolean,
796
+ easingFn?: EasingFunction | null,
797
+ callbacks?: MotionCallbacks,
798
+ state?: MotionState | null
799
+ ): MotionValueResult;
800
+
801
+ /**
802
+ * Standalone patrol animation.
803
+ * @see Motion.patrol for class method equivalent
804
+ */
805
+ export function patrolV1(
806
+ initialX: number,
807
+ initialY: number,
808
+ elapsedTime: number,
809
+ moveTime: number,
810
+ waitTime: number,
811
+ radius: number,
812
+ loop?: boolean,
813
+ state?: MotionState | null
814
+ ): MotionPositionResult;
815
+
816
+ /**
817
+ * Standalone pendulum animation.
818
+ * @see Motion.pendulum for class method equivalent
819
+ */
820
+ export function pendulumV1(
821
+ originAngle: number,
822
+ amplitude: number,
823
+ elapsedTime: number,
824
+ duration: number,
825
+ loop?: boolean,
826
+ damped?: boolean,
827
+ easingFn?: EasingFunction | null,
828
+ callbacks?: MotionCallbacks,
829
+ state?: MotionState | null
830
+ ): MotionValueResult;
831
+
832
+ /**
833
+ * Standalone pulse animation.
834
+ * @see Motion.pulse for class method equivalent
835
+ */
836
+ export function pulseV1(
837
+ min: number,
838
+ max: number,
839
+ elapsedTime: number,
840
+ duration: number,
841
+ loop?: boolean,
842
+ yoyo?: boolean,
843
+ easingFn?: EasingFunction | null,
844
+ callbacks?: MotionCallbacks
845
+ ): MotionValueResult;
846
+
847
+ /**
848
+ * Standalone hop/jump animation.
849
+ * @see Motion.hop for class method equivalent
850
+ */
851
+ export function hopV1(
852
+ startX: number,
853
+ startY: number,
854
+ endX: number,
855
+ endY: number,
856
+ height: number,
857
+ elapsedTime: number,
858
+ duration: number,
859
+ loop?: boolean,
860
+ easingFn?: EasingFunction | null,
861
+ callbacks?: MotionCallbacks,
862
+ state?: MotionState | null
863
+ ): MotionPositionResult;
864
+
865
+ /**
866
+ * Standalone shake animation.
867
+ * @see Motion.shake for class method equivalent
868
+ */
869
+ export function shakeV1(
870
+ centerX: number,
871
+ centerY: number,
872
+ maxOffsetX: number,
873
+ maxOffsetY: number,
874
+ frequency: number,
875
+ decay: number,
876
+ elapsedTime: number,
877
+ duration: number,
878
+ loop?: boolean,
879
+ easingFn?: EasingFunction | null,
880
+ callbacks?: MotionCallbacks,
881
+ state?: MotionState | null
882
+ ): MotionPositionResult;
883
+
884
+ /**
885
+ * Standalone spiral animation.
886
+ * @see Motion.spiral for class method equivalent
887
+ */
888
+ export function spiralV1(
889
+ centerX: number,
890
+ centerY: number,
891
+ startRadius: number,
892
+ endRadius: number,
893
+ startAngle: number,
894
+ revolutions: number,
895
+ elapsedTime: number,
896
+ duration: number,
897
+ loop?: boolean,
898
+ yoyo?: boolean,
899
+ easingFn?: EasingFunction | null,
900
+ callbacks?: MotionCallbacks,
901
+ state?: MotionState | null
902
+ ): MotionPositionResult;
903
+
904
+ /**
905
+ * Standalone spring animation.
906
+ * @see Motion.spring for class method equivalent
907
+ */
908
+ export function springV1(
909
+ initial: number,
910
+ target: number,
911
+ elapsedTime: number,
912
+ duration: number,
913
+ loop?: boolean,
914
+ yoyo?: boolean,
915
+ springParams?: SpringParams,
916
+ callbacks?: MotionCallbacks
917
+ ): SpringResult;
918
+
919
+ /**
920
+ * Standalone swing animation.
921
+ * @see Motion.swing for class method equivalent
922
+ */
923
+ export function swingV1(
924
+ centerX: number,
925
+ centerY: number,
926
+ maxAngle: number,
927
+ elapsedTime: number,
928
+ duration: number,
929
+ loop?: boolean,
930
+ yoyo?: boolean,
931
+ easingFn?: EasingFunction | null,
932
+ callbacks?: MotionCallbacks,
933
+ state?: MotionState | null
934
+ ): MotionPositionResult;
935
+
936
+ /**
937
+ * Standalone waypoint animation.
938
+ * @see Motion.waypoint for class method equivalent
939
+ */
940
+ export function waypointV1(
941
+ target: PositionTarget,
942
+ elapsedTime: number,
943
+ waypoints: [number, number][],
944
+ speed: number,
945
+ waitTime: number,
946
+ loop?: boolean,
947
+ callbacks?: MotionCallbacks,
948
+ state?: MotionState | null
949
+ ): WaypointResult;