@woosh/meep-engine 2.122.4 → 2.122.5

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 (44) hide show
  1. package/package.json +1 -1
  2. package/src/core/geom/2d/Rectangle.d.ts +8 -2
  3. package/src/core/geom/2d/Rectangle.d.ts.map +1 -1
  4. package/src/core/geom/ConicRay.d.ts +5 -1
  5. package/src/core/geom/ConicRay.d.ts.map +1 -1
  6. package/src/core/geom/Quaternion.d.ts +508 -100
  7. package/src/core/geom/Vector2.d.ts +385 -60
  8. package/src/core/geom/Vector3.d.ts +569 -135
  9. package/src/core/model/node-graph/visual/NodeVisualData.d.ts +8 -2
  10. package/src/core/model/node-graph/visual/NodeVisualData.d.ts.map +1 -1
  11. package/src/core/model/node-graph/visual/PortVisualData.d.ts +4 -1
  12. package/src/core/model/node-graph/visual/PortVisualData.d.ts.map +1 -1
  13. package/src/engine/ecs/components/Motion.d.ts +5 -1
  14. package/src/engine/ecs/components/Motion.d.ts.map +1 -1
  15. package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
  16. package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts +5 -1
  17. package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts.map +1 -1
  18. package/src/engine/ecs/gui/position/ViewportPosition.d.ts +15 -6
  19. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  20. package/src/engine/ecs/terrain/TerrainPreview.d.ts +8 -2
  21. package/src/engine/ecs/terrain/TerrainPreview.d.ts.map +1 -1
  22. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  23. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts +4 -1
  24. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts.map +1 -1
  25. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts +4 -1
  26. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  27. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts +4 -1
  28. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  29. package/src/engine/ecs/transform/Transform.d.ts +16 -3
  30. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  31. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  32. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  33. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +5 -1
  34. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
  35. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  36. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +15 -3
  37. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
  38. package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts +4 -1
  39. package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts.map +1 -1
  40. package/src/engine/grid/obstacle/GridObstacle.d.ts +4 -1
  41. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  42. package/src/generation/theme/TerrainLayerDescription.d.ts +4 -1
  43. package/src/generation/theme/TerrainLayerDescription.d.ts.map +1 -1
  44. package/src/core/geom/Vector3.schema.json +0 -16
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.122.4",
8
+ "version": "2.122.5",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -132,8 +132,14 @@ declare class Rectangle {
132
132
  */
133
133
  toArray(target: Array<number> | Float32Array | Float64Array | Uint8Array, targetOffset?: number): void;
134
134
  toJSON(): {
135
- position: any;
136
- size: any;
135
+ position: {
136
+ x: number;
137
+ y: number;
138
+ };
139
+ size: {
140
+ x: number;
141
+ y: number;
142
+ };
137
143
  };
138
144
  fromJSON(json: any): void;
139
145
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Rectangle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/2d/Rectangle.js"],"names":[],"mappings":";AAOA;IACI;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,UACN,MAAM,WACN,MAAM,EAgBhB;IAXG;;;OAGG;IACH,mBAFU,OAAO,CAEgB;IAEjC;;;OAGG;IACH,eAFU,OAAO,CAEqB;IAG1C;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;;;;OAMG;IACH,OALW,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,QAKhB;IAED;;;OAGG;IACH,SAFa,SAAS,CAUrB;IAED;;;OAGG;IACH,YAFW,SAAS,QAKnB;IAED;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAUnB;IAED;;;;OAIG;IACH,kBAHW,SAAS,GACP,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAenB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CASnB;IAED;;;;;;OAMG;IACH,iBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAyBhB;IAED;;;OAGG;IACH,mBAFW,SAAS,QASnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAiBnB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CAUnB;IAED;;;OAGG;IACH,sBAFW,OAAO,QAUjB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,gBAHW,KAAK,CAAE,MAAM,CAAC,GAAC,YAAY,GAAC,YAAY,GAAC,UAAU,iBACnD,MAAM,QAOhB;IAED;;;MAKC;IAED,0BAGC;IAGL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAN9B;oBArSmB,eAAe"}
1
+ {"version":3,"file":"Rectangle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/2d/Rectangle.js"],"names":[],"mappings":";AAOA;IACI;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,UACN,MAAM,WACN,MAAM,EAgBhB;IAXG;;;OAGG;IACH,mBAFU,OAAO,CAEgB;IAEjC;;;OAGG;IACH,eAFU,OAAO,CAEqB;IAG1C;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;;;;OAMG;IACH,OALW,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,QAKhB;IAED;;;OAGG;IACH,SAFa,SAAS,CAUrB;IAED;;;OAGG;IACH,YAFW,SAAS,QAKnB;IAED;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAUnB;IAED;;;;OAIG;IACH,kBAHW,SAAS,GACP,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAenB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CASnB;IAED;;;;;;OAMG;IACH,iBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAyBhB;IAED;;;OAGG;IACH,mBAFW,SAAS,QASnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAiBnB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CAUnB;IAED;;;OAGG;IACH,sBAFW,OAAO,QAUjB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,gBAHW,KAAK,CAAE,MAAM,CAAC,GAAC,YAAY,GAAC,YAAY,GAAC,UAAU,iBACnD,MAAM,QAOhB;IAED;;;;;;;;;MAKC;IAED,0BAGC;IAGL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAN9B;oBArSmB,eAAe"}
@@ -28,7 +28,11 @@ export class ConicRay {
28
28
  */
29
29
  angle: number;
30
30
  toJSON(): {
31
- direction: any;
31
+ direction: {
32
+ x: number;
33
+ y: number;
34
+ z: number;
35
+ };
32
36
  angle: number;
33
37
  };
34
38
  fromJSON(json: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;IA6BL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B;;kBAUS,MAAM;;oBA/NI,cAAc"}
1
+ {"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;;;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;IA6BL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B;;kBAUS,MAAM;;oBA/NI,cAAc"}
@@ -1,100 +1,508 @@
1
- import {Matrix4} from "three";
2
- import Signal from "../events/signal/Signal";
3
- import Vector3 from "./Vector3";
4
-
5
- interface Vector3Like {
6
- x: number,
7
- y: number,
8
- z: number
9
- }
10
-
11
- interface QuaternionLike {
12
- x: number
13
- y: number
14
- z: number
15
- w: number
16
- }
17
-
18
- export default class Quaternion {
19
- x: number
20
- y: number
21
- z: number
22
- w: number
23
-
24
- 0: number
25
- 1: number
26
- 2: number
27
- 3: number
28
-
29
- readonly onChanged: Signal<number, number, number, number, number, number, number, number>;
30
-
31
- set(x: number, y: number, z: number, w: number): void
32
-
33
- copy(other: QuaternionLike): void
34
-
35
- clone(): Quaternion
36
-
37
- random(random?: () => number): void
38
-
39
- equals(other: { x: number, y: number, z: number, w: number }): boolean
40
-
41
- roughlyEquals(other: { x: number, y: number, z: number, w: number }, tolerance?: number): boolean
42
-
43
- slerp(other: Quaternion, t: number): void
44
-
45
- normalize(): void
46
-
47
- length(): number
48
-
49
- __setFromEuler(x: number, y: number, z: number, order?: string): void
50
-
51
- fromEulerAnglesXYZ(x: number, y: number, z: number): void
52
-
53
- fromEulerAnglesYXZ(y: number, x: number, z: number): void
54
-
55
- fromEulerAnglesZXY(z: number, x: number, y: number): void
56
-
57
- fromEulerAnglesZYX(z: number, y: number, x: number): void
58
-
59
- fromEulerAnglesYZX(y: number, z: number, x: number): void
60
-
61
- fromEulerAnglesXZY(x: number, z: number, y: number): void
62
-
63
- setFromRotationMatrix(m: Matrix4): void
64
-
65
- setRotationMatrix(matrix: ArrayLike<number>): void
66
-
67
- decodeFromUint32(uint: number): void
68
-
69
- _lookRotation(forward_x: number, forward_y: number, forward_z: number, up_x: number, up_y: number, up_z: number): void
70
-
71
- lookRotation(v3: Vector3Like, up?: Vector3Like): void
72
-
73
- rotateTowards(other: Quaternion, max_angle: number): void
74
-
75
- toEulerAnglesXYZ(v3: { set(x: number, y: number, z: number): any }): void
76
-
77
- fromAxisAngle(axis: Vector3Like, angle: number): void
78
-
79
- toAxisAngle(axis: Vector3): number
80
-
81
- computeTwistAngle(axis: Vector3Like): number
82
-
83
- multiplyQuaternions(a: Quaternion, b: Quaternion): void
84
-
85
- angleTo(other: Quaternion): number
86
-
87
- toJSON(): any
88
-
89
- fromJSON(j: any): void
90
-
91
- readFromArray(array: ArrayLike<number>, offset?: number): void
92
-
93
- writeToArray(array: ArrayLike<number>, offset?: number): void
94
-
95
- asArray(): number[]
96
-
97
- static fromEulerAngles(x:number, y:number, z:number):Quaternion;
98
-
99
- static readonly identity: Quaternion
100
- }
1
+ /**
2
+ * Rotation representation in 3d space
3
+ * @see https://en.wikipedia.org/wiki/Quaternion
4
+ *
5
+ * @author Alex Goldring
6
+ * @copyright Company Named Limited (c) 2025
7
+ */
8
+ export class Quaternion {
9
+ /**
10
+ *
11
+ * @param {Vector3} axis
12
+ * @param {number} angle
13
+ * @returns {Quaternion}
14
+ */
15
+ static fromAxisAngle(axis: Vector3, angle: number): Quaternion;
16
+ /**
17
+ * Create a randomly oriented quaternion
18
+ * @param {function} [random] random number generator function
19
+ * @returns {Quaternion}
20
+ */
21
+ static random(random?: Function): Quaternion;
22
+ /**
23
+ * Convenience constructor
24
+ * Used XYZ angle order (see {@link fromEulerAnglesXYZ})
25
+ * @param {number} x in radians
26
+ * @param {number} y in radians
27
+ * @param {number} z in radians
28
+ * @returns {Quaternion}
29
+ */
30
+ static fromEulerAngles(x: number, y: number, z: number): Quaternion;
31
+ /**
32
+ * Behaves similarly to Unity's Quaternion `RotateToward` method
33
+ * @param {Quaternion} result
34
+ * @param {Quaternion} from
35
+ * @param {Quaternion} to
36
+ * @param {number} max_delta in radians
37
+ */
38
+ static rotateTowards(result: Quaternion, from: Quaternion, to: Quaternion, max_delta: number): void;
39
+ /**
40
+ *
41
+ * @param {number} [x=0]
42
+ * @param {number} [y=0]
43
+ * @param {number} [z=0]
44
+ * @param {number} [w=1]
45
+ * @constructor
46
+ */
47
+ constructor(x?: number, y?: number, z?: number, w?: number);
48
+ /**
49
+ *
50
+ * @type {number}
51
+ */
52
+ x: number;
53
+ /**
54
+ *
55
+ * @type {number}
56
+ */
57
+ y: number;
58
+ /**
59
+ *
60
+ * @type {number}
61
+ */
62
+ z: number;
63
+ /**
64
+ *
65
+ * @type {number}
66
+ */
67
+ w: number;
68
+ /**
69
+ * Fired when value of the quaternion changes
70
+ * Signature of the signal data is as follows:
71
+ * (new_x, new_y, new_z, new_w, old_x, old_y, old_z, old_w)
72
+ * @readonly
73
+ * @type {Signal<number, number, number, number, number, number, number, number>}
74
+ */
75
+ readonly onChanged: Signal<number, number, number, number, number, number, number, number>;
76
+ set 0(v: number);
77
+ get 0(): number;
78
+ set 1(v: number);
79
+ get 1(): number;
80
+ set 2(v: number);
81
+ get 2(): number;
82
+ set 3(v: number);
83
+ get 3(): number;
84
+ /**
85
+ * Orient quaternion on a `forward` vector, with the spin matching `up` vector
86
+ * Useful for `lookAt` operations, such as for camera or inverse kinematics
87
+ * @param {number} fx forward vector
88
+ * @param {number} fy forward vector
89
+ * @param {number} fz forward vector
90
+ * @param {number} ux up vector
91
+ * @param {number} uy up vector
92
+ * @param {number} uz up vector
93
+ */
94
+ _lookRotation(fx: number, fy: number, fz: number, ux: number, uy: number, uz: number): void;
95
+ /**
96
+ *
97
+ * @param {Vector3} forward
98
+ * @param {Vector3} [up=Vector3.up]
99
+ */
100
+ lookRotation(forward: Vector3, up?: Vector3): void;
101
+ /**
102
+ * Vector dot product in 4 dimensions
103
+ * @param {Quaternion} other
104
+ * @return {number}
105
+ */
106
+ dot(other: Quaternion): number;
107
+ /**
108
+ * Makes this quaternion into an inverse of the other
109
+ * @param {Quaternion} other
110
+ */
111
+ copyInverse(other: Quaternion): void;
112
+ /**
113
+ * Calculates the inverse
114
+ */
115
+ invert(): void;
116
+ /**
117
+ * Returns angle between this orientation and another
118
+ * @param {Quaternion} other
119
+ * @return {number} angle in radians
120
+ */
121
+ angleTo(other: Quaternion): number;
122
+ /**
123
+ *
124
+ * @param {Vector3} axis
125
+ * @param {number} angle
126
+ */
127
+ fromAxisAngle(axis: Vector3, angle: number): void;
128
+ /**
129
+ *
130
+ * @param {number} ax
131
+ * @param {number} ay
132
+ * @param {number} az
133
+ * @param {number} angle
134
+ */
135
+ _fromAxisAngle(ax: number, ay: number, az: number, angle: number): void;
136
+ /**
137
+ * @see https://stackoverflow.com/questions/3684269/component-of-a-quaternion-rotation-around-an-axis
138
+ * @param {Vector3} axis
139
+ * @param {Quaternion} swing
140
+ * @param {Quaternion} twist
141
+ */
142
+ computeSwingAndTwist(axis: Vector3, swing: Quaternion, twist: Quaternion): void;
143
+ /**
144
+ * Compute rotation (twist) around input axis
145
+ * @param {Vector3} axis
146
+ * @returns {number} in radians
147
+ */
148
+ computeTwistAngle(axis: Vector3): number;
149
+ /**
150
+ *
151
+ * @param {Vector3} axis
152
+ * @returns {number} angle in radians
153
+ */
154
+ toAxisAngle(axis: Vector3): number;
155
+ /**
156
+ *
157
+ * @returns {this}
158
+ */
159
+ normalize(): this;
160
+ /**
161
+ *
162
+ * @param {number} val
163
+ * @return {this}
164
+ */
165
+ multiplyScalar(val: number): this;
166
+ /**
167
+ * @param {Quaternion} other
168
+ * @returns {this}
169
+ */
170
+ multiply(other: Quaternion): this;
171
+ /**
172
+ *
173
+ * @param {Quaternion} first
174
+ * @param {Quaternion} second
175
+ * @returns {this}
176
+ */
177
+ multiplyQuaternions(first: Quaternion, second: Quaternion): this;
178
+ /**
179
+ *
180
+ * @param {number} ax
181
+ * @param {number} ay
182
+ * @param {number} az
183
+ * @param {number} aw
184
+ * @param {number} bx
185
+ * @param {number} by
186
+ * @param {number} bz
187
+ * @param {number} bw
188
+ * @returns {this}
189
+ */
190
+ _multiplyQuaternions(ax: number, ay: number, az: number, aw: number, bx: number, by: number, bz: number, bw: number): this;
191
+ /**
192
+ *
193
+ * @return {number}
194
+ */
195
+ length(): number;
196
+ /**
197
+ *
198
+ * @param {Quaternion} other
199
+ * @param {number} max_delta in radians
200
+ * @returns {this}
201
+ */
202
+ rotateTowards(other: Quaternion, max_delta: number): this;
203
+ /**
204
+ *
205
+ * @param {Vector3} source
206
+ * @param {Vector3} target
207
+ * @param {Vector3} [up]
208
+ */
209
+ lookAt(source: Vector3, target: Vector3, up?: Vector3): void;
210
+ /**
211
+ * @deprecated use {@link random} instead
212
+ * @param {function():number} random
213
+ */
214
+ setRandom(random: () => number): Quaternion;
215
+ /**
216
+ *
217
+ * @param {number} x
218
+ * @param {number} y
219
+ * @param {number} z
220
+ * @param {String} [order] a combination of capital letters X,Y,Z. Examples: XYZ, YXZ
221
+ * @returns {Quaternion}
222
+ */
223
+ __setFromEuler(x: number, y: number, z: number, order?: string): Quaternion;
224
+ /**
225
+ * @see https://localcoder.org/euler-angle-to-quaternion-then-quaternion-to-euler-angle
226
+ * @see https://discourse.mcneel.com/t/what-is-the-right-method-to-convert-quaternion-to-plane-using-rhinocommon/92411/21?page=2
227
+ * @param {Vector3} result
228
+ */
229
+ toEulerAnglesXYZ(result: Vector3): void;
230
+ /**
231
+ * Adapted from http://bediyap.com/programming/convert-quaternion-to-euler-rotations/
232
+ * @param {Vector3} result
233
+ */
234
+ toEulerAnglesYXZ(result: Vector3): void;
235
+ /**
236
+ * Adapted from http://bediyap.com/programming/convert-quaternion-to-euler-rotations/
237
+ * @param {Vector3} result
238
+ */
239
+ toEulerAnglesZYX(result: Vector3): void;
240
+ /**
241
+ * XYZ order
242
+ * @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
243
+ * @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
244
+ * @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
245
+ * @param {number} x angle in X axis in radians
246
+ * @param {number} y angle in Y axis in radians
247
+ * @param {number} z angle in Z axis in radians
248
+ * @returns {this}
249
+ */
250
+ fromEulerAnglesXYZ(x: number, y: number, z: number): this;
251
+ /**
252
+ * YXZ order
253
+ * @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
254
+ * @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
255
+ * @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
256
+ * @param {number} x angle in X axis in radians
257
+ * @param {number} y angle in Y axis in radians
258
+ * @param {number} z angle in Z axis in radians
259
+ * @returns {this}
260
+ */
261
+ fromEulerAnglesYXZ(x: number, y: number, z: number): this;
262
+ /**
263
+ * ZXY order
264
+ * @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
265
+ * @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
266
+ * @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
267
+ * @param {number} x angle in X axis in radians
268
+ * @param {number} y angle in Y axis in radians
269
+ * @param {number} z angle in Z axis in radians
270
+ * @returns {this}
271
+ */
272
+ fromEulerAnglesZXY(x: number, y: number, z: number): this;
273
+ /**
274
+ * ZYX order
275
+ * @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
276
+ * @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
277
+ * @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
278
+ * @param {number} x angle in X axis in radians
279
+ * @param {number} y angle in Y axis in radians
280
+ * @param {number} z angle in Z axis in radians
281
+ * @returns {this}
282
+ */
283
+ fromEulerAnglesZYX(x: number, y: number, z: number): this;
284
+ /**
285
+ * YZX order
286
+ * @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
287
+ * @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
288
+ * @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
289
+ * @param {number} x angle in X axis in radians
290
+ * @param {number} y angle in Y axis in radians
291
+ * @param {number} z angle in Z axis in radians
292
+ * @returns {this}
293
+ */
294
+ fromEulerAnglesYZX(x: number, y: number, z: number): this;
295
+ /**
296
+ * XZY order
297
+ * @source: https://stackoverflow.com/questions/12088610/conversion-between-euler-quaternion-like-in-unity3d-engine
298
+ * @see http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m
299
+ * @see https://github.com/mrdoob/three.js/blob/510705cde208b165fd87946b0f8504a1cd6dbe83/src/math/Quaternion.js#L206
300
+ * @param {number} x angle in X axis in radians
301
+ * @param {number} y angle in Y axis in radians
302
+ * @param {number} z angle in Z axis in radians
303
+ * @returns {this}
304
+ */
305
+ fromEulerAnglesXZY(x: number, y: number, z: number): this;
306
+ /**
307
+ * NOTE: Vectors need to be normalized
308
+ *
309
+ * @param {Vector3} from
310
+ * @param {Vector3} to
311
+ * @returns {this}
312
+ */
313
+ fromUnitVectors(from: Vector3, to: Vector3): this;
314
+ /**
315
+ * @param {number[]} m4x4
316
+ * @returns {this}
317
+ */
318
+ setFromRotationMatrix(m4x4: number[]): this;
319
+ /**
320
+ * This algorithm comes from "Quaternion Calculus and Fast Animation",
321
+ * Ken Shoemake, 1987 SIGGRAPH course notes
322
+ * @see https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/Geometry/Quaternion.h#L813
323
+ * @param {number} m11
324
+ * @param {number} m12
325
+ * @param {number} m13
326
+ * @param {number} m21
327
+ * @param {number} m22
328
+ * @param {number} m23
329
+ * @param {number} m31
330
+ * @param {number} m32
331
+ * @param {number} m33
332
+ * @returns {this}
333
+ */
334
+ __setFromRotationMatrix(m11: number, m12: number, m13: number, m21: number, m22: number, m23: number, m31: number, m32: number, m33: number): this;
335
+ /**
336
+ * Linear interpolation
337
+ * @param {Quaternion} other
338
+ * @param {number} t fractional value between 0 and 1
339
+ * @returns {this}
340
+ */
341
+ lerp(other: Quaternion, t: number): this;
342
+ /**
343
+ * Linear interpolation of two quaternions
344
+ * Pretty good, not as good as slerp, but close enough for most application
345
+ * @param {Quaternion} first
346
+ * @param {Quaternion} second
347
+ * @param {number} t
348
+ * @returns {this}
349
+ */
350
+ lerpQuaternions(first: Quaternion, second: Quaternion, t: number): this;
351
+ /**
352
+ * Spherical linear interpolation
353
+ * @param {Quaternion} from
354
+ * @param {Quaternion} to
355
+ * @param {number} t coefficient, how much between the input quats?
356
+ * @returns {this}
357
+ */
358
+ slerpQuaternions(from: Quaternion, to: Quaternion, t: number): this;
359
+ /**
360
+ * @see https://github.com/toji/gl-matrix/blob/master/src/gl-matrix/quat.js
361
+ * @param {Quaternion} other
362
+ * @param {number} t
363
+ * @returns {this}
364
+ */
365
+ slerp(other: Quaternion, t: number): this;
366
+ /**
367
+ *
368
+ * @param {function(x:number,y:number,z:number,w:number)} handler
369
+ * @param {*} [thisArg]
370
+ * @returns {this}
371
+ */
372
+ process(handler: any, thisArg?: any): this;
373
+ /**
374
+ *
375
+ * @param {Quaternion} other
376
+ * @returns {this}
377
+ */
378
+ copy(other: Quaternion): this;
379
+ /**
380
+ *
381
+ * @returns {Quaternion}
382
+ */
383
+ clone(): Quaternion;
384
+ /**
385
+ * Set current value of the quaternion
386
+ * You *MUST* use this method in order for {@link Quaternion#onChanged} signal to be fired
387
+ * @param {number} x
388
+ * @param {number} y
389
+ * @param {number} z
390
+ * @param {number} w
391
+ * @returns {this}
392
+ */
393
+ set(x: number, y: number, z: number, w: number): this;
394
+ /**
395
+ *
396
+ * @returns {this}
397
+ */
398
+ conjugate(): this;
399
+ toJSON(): {
400
+ x: number;
401
+ y: number;
402
+ z: number;
403
+ w: number;
404
+ };
405
+ fromJSON(obj: any): void;
406
+ /**
407
+ *
408
+ * @param {BinaryBuffer} buffer
409
+ */
410
+ toBinaryBuffer(buffer: BinaryBuffer): void;
411
+ /**
412
+ *
413
+ * @param {BinaryBuffer} buffer
414
+ */
415
+ fromBinaryBuffer(buffer: BinaryBuffer): void;
416
+ /**
417
+ *
418
+ * @param {BinaryBuffer} buffer
419
+ */
420
+ toBinaryBufferFloat32(buffer: BinaryBuffer): void;
421
+ /**
422
+ *
423
+ * @param {BinaryBuffer} buffer
424
+ */
425
+ fromBinaryBufferFloat32(buffer: BinaryBuffer): void;
426
+ /**
427
+ * Based on GDC talk from Bungie on destiny, compressing quaternions for animation
428
+ * @deprecated use `quat_decode_from_uint32` instead
429
+ * @param {number} value
430
+ */
431
+ decodeFromUint32(value: number): void;
432
+ /**
433
+ * Based on GDC talk from Bungie on destiny, compressing quaternions for animation
434
+ * @deprecated use `quat_encode_to_uint32` instead
435
+ * @returns {number}
436
+ */
437
+ encodeToUint32(): number;
438
+ /**
439
+ *
440
+ * @param {number[]} array
441
+ * @param {number} offset
442
+ */
443
+ readFromArray(array: number[], offset?: number): void;
444
+ /**
445
+ *
446
+ * @param {number[]} [array]
447
+ * @param {number} [offset]
448
+ * @returns {number[]}
449
+ */
450
+ writeToArray(array?: number[], offset?: number): number[];
451
+ /**
452
+ *
453
+ * @param {Quaternion} other
454
+ * @returns {boolean}
455
+ */
456
+ equals(other: Quaternion): boolean;
457
+ /**
458
+ *
459
+ * @returns {number} integer hash
460
+ */
461
+ hash(): number;
462
+ /**
463
+ * Check for approximate equality between two quaternions
464
+ * @param {Quaternion} other
465
+ * @param {number} [tolerance]
466
+ * @return {boolean}
467
+ */
468
+ roughlyEquals(other: Quaternion, tolerance?: number): boolean;
469
+ /**
470
+ *
471
+ * @param {number} x
472
+ * @param {number} y
473
+ * @param {number} z
474
+ * @param {number} w
475
+ * @param {number} [tolerance]
476
+ * @return {boolean}
477
+ */
478
+ _roughlyEquals(x: number, y: number, z: number, w: number, tolerance?: number): boolean;
479
+ /**
480
+ * Randomly orient current quaternion
481
+ * @param {function():number} [random] Defaults to {@link Math.random}
482
+ * @return {Quaternion}
483
+ */
484
+ random(random?: () => number): Quaternion;
485
+ toString(): string;
486
+ fromArray: (array: number[], offset?: number) => void;
487
+ toArray: (array?: number[], offset?: number) => number[];
488
+ asArray: (array?: number[], offset?: number) => number[];
489
+ fromEulerAngles: (x: number, y: number, z: number) => Quaternion;
490
+ /**
491
+ * Shortcut for type checking
492
+ * @readonly
493
+ * @type {boolean}
494
+ */
495
+ readonly isQuaternion: boolean;
496
+ /**
497
+ * Making quaternion iterable
498
+ */
499
+ [Symbol.iterator](): Generator<number, void, unknown>;
500
+ }
501
+ export namespace Quaternion {
502
+ let identity: Quaternion;
503
+ let typeName: string;
504
+ }
505
+ export default Quaternion;
506
+ import Signal from "../events/signal/Signal.js";
507
+ import Vector3 from "./Vector3.js";
508
+ //# sourceMappingURL=Quaternion.d.ts.map