@math.gl/core 4.0.0-alpha.1 → 4.0.0-alpha.2
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.
- package/dist/classes/base/math-array.d.ts +2 -1
- package/dist/classes/base/math-array.d.ts.map +1 -1
- package/dist/classes/base/math-array.js +5 -1
- package/dist/classes/base/math-array.js.map +1 -1
- package/dist/classes/base/matrix.d.ts +2 -2
- package/dist/classes/base/matrix.d.ts.map +1 -1
- package/dist/classes/base/matrix.js +2 -2
- package/dist/classes/base/matrix.js.map +1 -1
- package/dist/classes/base/vector.d.ts +2 -2
- package/dist/classes/base/vector.d.ts.map +1 -1
- package/dist/classes/base/vector.js +3 -3
- package/dist/classes/base/vector.js.map +1 -1
- package/dist/classes/euler.d.ts +3 -3
- package/dist/classes/euler.d.ts.map +1 -1
- package/dist/classes/euler.js +4 -4
- package/dist/classes/euler.js.map +1 -1
- package/dist/classes/matrix3.d.ts +5 -2
- package/dist/classes/matrix3.d.ts.map +1 -1
- package/dist/classes/matrix3.js +17 -17
- package/dist/classes/matrix3.js.map +1 -1
- package/dist/classes/matrix4.d.ts +2 -2
- package/dist/classes/matrix4.d.ts.map +1 -1
- package/dist/classes/matrix4.js +25 -25
- package/dist/classes/matrix4.js.map +1 -1
- package/dist/classes/pose.d.ts +5 -5
- package/dist/classes/pose.d.ts.map +1 -1
- package/dist/classes/pose.js +4 -4
- package/dist/classes/pose.js.map +1 -1
- package/dist/classes/quaternion.d.ts +2 -2
- package/dist/classes/quaternion.d.ts.map +1 -1
- package/dist/classes/quaternion.js +25 -25
- package/dist/classes/quaternion.js.map +1 -1
- package/dist/classes/spherical-coordinates.d.ts +4 -4
- package/dist/classes/spherical-coordinates.d.ts.map +1 -1
- package/dist/classes/spherical-coordinates.js +3 -3
- package/dist/classes/spherical-coordinates.js.map +1 -1
- package/dist/classes/vector2.d.ts +2 -2
- package/dist/classes/vector2.d.ts.map +1 -1
- package/dist/classes/vector2.js +7 -7
- package/dist/classes/vector2.js.map +1 -1
- package/dist/classes/vector3.d.ts +2 -2
- package/dist/classes/vector3.d.ts.map +1 -1
- package/dist/classes/vector3.js +11 -11
- package/dist/classes/vector3.js.map +1 -1
- package/dist/classes/vector4.d.ts +3 -3
- package/dist/classes/vector4.d.ts.map +1 -1
- package/dist/classes/vector4.js +5 -5
- package/dist/classes/vector4.js.map +1 -1
- package/dist/gl-matrix/common.d.ts +38 -0
- package/dist/gl-matrix/common.d.ts.map +1 -0
- package/dist/gl-matrix/common.js +19 -0
- package/dist/gl-matrix/common.js.map +1 -0
- package/dist/gl-matrix/mat3.d.ts +295 -0
- package/dist/gl-matrix/mat3.d.ts.map +1 -0
- package/dist/gl-matrix/mat3.js +489 -0
- package/dist/gl-matrix/mat3.js.map +1 -0
- package/dist/gl-matrix/mat4.d.ts +577 -0
- package/dist/gl-matrix/mat4.d.ts.map +1 -0
- package/dist/gl-matrix/mat4.js +1455 -0
- package/dist/gl-matrix/mat4.js.map +1 -0
- package/dist/gl-matrix/quat.d.ts +357 -0
- package/dist/gl-matrix/quat.d.ts.map +1 -0
- package/dist/gl-matrix/quat.js +315 -0
- package/dist/gl-matrix/quat.js.map +1 -0
- package/dist/gl-matrix/vec2.d.ts +373 -0
- package/dist/gl-matrix/vec2.d.ts.map +1 -0
- package/dist/gl-matrix/vec2.js +257 -0
- package/dist/gl-matrix/vec2.js.map +1 -0
- package/dist/gl-matrix/vec3.d.ts +416 -0
- package/dist/gl-matrix/vec3.d.ts.map +1 -0
- package/dist/gl-matrix/vec3.js +384 -0
- package/dist/gl-matrix/vec3.js.map +1 -0
- package/dist/gl-matrix/vec4.d.ts +340 -0
- package/dist/gl-matrix/vec4.d.ts.map +1 -0
- package/dist/gl-matrix/vec4.js +334 -0
- package/dist/gl-matrix/vec4.js.map +1 -0
- package/dist/gl-matrix/wip/index.d.ts +5 -0
- package/dist/gl-matrix/wip/index.d.ts.map +1 -0
- package/dist/gl-matrix/wip/index.js +12 -0
- package/dist/gl-matrix/wip/index.js.map +1 -0
- package/dist/gl-matrix/wip/mat2.d.ts +229 -0
- package/dist/gl-matrix/wip/mat2.d.ts.map +1 -0
- package/dist/gl-matrix/wip/mat2.js +208 -0
- package/dist/gl-matrix/wip/mat2.js.map +1 -0
- package/dist/gl-matrix/wip/mat2d.d.ts +244 -0
- package/dist/gl-matrix/wip/mat2d.d.ts.map +1 -0
- package/dist/gl-matrix/wip/mat2d.js +251 -0
- package/dist/gl-matrix/wip/mat2d.js.map +1 -0
- package/dist/gl-matrix/wip/quat2.d.ts +352 -0
- package/dist/gl-matrix/wip/quat2.d.ts.map +1 -0
- package/dist/gl-matrix/wip/quat2.js +482 -0
- package/dist/gl-matrix/wip/quat2.js.map +1 -0
- package/dist/gl-matrix/wip/types.d.js +2 -0
- package/dist/gl-matrix/wip/types.d.js.map +1 -0
- package/dist/index.cjs +1603 -150
- package/dist/index.d.ts +15 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/assert.d.ts +1 -1
- package/dist/lib/assert.d.ts.map +1 -1
- package/dist/lib/assert.js +1 -1
- package/dist/lib/assert.js.map +1 -1
- package/dist/lib/common.d.ts +11 -6
- package/dist/lib/common.d.ts.map +1 -1
- package/dist/lib/common.js +8 -2
- package/dist/lib/common.js.map +1 -1
- package/dist/lib/math-utils.d.ts +24 -27
- package/dist/lib/math-utils.d.ts.map +1 -1
- package/dist/lib/math-utils.js +24 -26
- package/dist/lib/math-utils.js.map +1 -1
- package/dist/lib/validators.js +1 -1
- package/dist/lib/validators.js.map +1 -1
- package/package.json +3 -4
- package/src/classes/base/math-array.ts +6 -2
- package/src/classes/base/matrix.ts +6 -3
- package/src/classes/base/vector.ts +3 -3
- package/src/classes/euler.ts +5 -4
- package/src/classes/matrix3.ts +32 -23
- package/src/classes/matrix4.ts +45 -31
- package/src/classes/pose.ts +4 -4
- package/src/classes/quaternion.ts +48 -28
- package/src/classes/spherical-coordinates.ts +3 -3
- package/src/classes/vector2.ts +13 -10
- package/src/classes/vector3.ts +25 -12
- package/src/classes/vector4.ts +10 -8
- package/src/gl-matrix/common.js +58 -0
- package/src/gl-matrix/mat3.js +842 -0
- package/src/gl-matrix/mat4.js +2169 -0
- package/src/gl-matrix/quat.ts +789 -0
- package/src/gl-matrix/vec2.js +629 -0
- package/src/gl-matrix/vec3.js +827 -0
- package/src/gl-matrix/vec4.js +675 -0
- package/src/gl-matrix/wip/index.js +15 -0
- package/src/gl-matrix/wip/mat2.js +442 -0
- package/src/gl-matrix/wip/mat2d.js +505 -0
- package/src/gl-matrix/wip/quat2.ts +886 -0
- package/src/gl-matrix/wip/types.d.ts +93 -0
- package/src/index.ts +16 -14
- package/src/lib/assert.ts +1 -1
- package/src/lib/common.ts +29 -13
- package/src/lib/math-utils.ts +24 -26
- package/src/lib/validators.ts +1 -1
- package/dist/docs/README.md +0 -0
- package/src/docs/README.md +0 -0
package/dist/classes/pose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/classes/pose.ts"],"names":["Matrix4","Vector3","Euler","Pose","constructor","x","y","z","roll","pitch","yaw","position","orientation","Array","isArray","length","RollPitchYaw","value","getPosition","getOrientation","equals","pose","exactEquals","getTransformationMatrix","sr","Math","sin","sp","sw","cr","cos","cp","cw","setRowMajor","getTransformationMatrixFromPose","multiplyRight","invert","getTransformationMatrixToPose"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../src/classes/pose.ts"],"names":["Matrix4","Vector3","Euler","Pose","constructor","x","y","z","roll","pitch","yaw","position","orientation","Array","isArray","length","RollPitchYaw","value","getPosition","getOrientation","equals","pose","exactEquals","getTransformationMatrix","sr","Math","sin","sp","sw","cr","cos","cp","cw","setRowMajor","getTransformationMatrixFromPose","multiplyRight","invert","getTransformationMatrixToPose"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {Matrix4} from './matrix4';\nimport {Vector3} from './vector3';\nimport {Euler} from './euler';\nimport {NumericArray} from '@math.gl/types';\n\ntype PoseOptions = {\n position?: Readonly<NumericArray>;\n orientation?: Readonly<NumericArray>;\n x?: number;\n y?: number;\n z?: number;\n roll?: number;\n pitch?: number;\n yaw?: number;\n};\n\nexport class Pose {\n readonly position: Vector3;\n readonly orientation: Euler;\n\n constructor({\n x = 0,\n y = 0,\n z = 0,\n roll = 0,\n pitch = 0,\n yaw = 0,\n position,\n orientation\n }: PoseOptions = {}) {\n if (Array.isArray(position) && position.length === 3) {\n this.position = new Vector3(position);\n } else {\n this.position = new Vector3(x, y, z);\n }\n if (Array.isArray(orientation) && orientation.length === 4) {\n // @ts-expect-error\n this.orientation = new Euler(orientation, orientation[3]);\n } else {\n this.orientation = new Euler(roll, pitch, yaw, Euler.RollPitchYaw);\n }\n }\n\n get x(): number {\n return this.position.x;\n }\n\n set x(value: number) {\n this.position.x = value;\n }\n\n get y(): number {\n return this.position.y;\n }\n\n set y(value: number) {\n this.position.y = value;\n }\n\n get z(): number {\n return this.position.z;\n }\n\n set z(value: number) {\n this.position.z = value;\n }\n\n get roll(): number {\n return this.orientation.roll;\n }\n\n set roll(value: number) {\n this.orientation.roll = value;\n }\n\n get pitch(): number {\n return this.orientation.pitch;\n }\n set pitch(value: number) {\n this.orientation.pitch = value;\n }\n\n get yaw(): number {\n return this.orientation.yaw;\n }\n\n set yaw(value: number) {\n this.orientation.yaw = value;\n }\n\n getPosition(): Vector3 {\n return this.position;\n }\n\n getOrientation(): Euler {\n return this.orientation;\n }\n\n equals(pose: Pose): boolean {\n if (!pose) {\n return false;\n }\n return this.position.equals(pose.position) && this.orientation.equals(pose.orientation);\n }\n\n exactEquals(pose: Pose): boolean {\n if (!pose) {\n return false;\n }\n return (\n this.position.exactEquals(pose.position) && this.orientation.exactEquals(pose.orientation)\n );\n }\n\n getTransformationMatrix(): Matrix4 {\n // setup pre computations for the sin/cos of the angles\n const sr = Math.sin(this.roll);\n const sp = Math.sin(this.pitch);\n const sw = Math.sin(this.yaw);\n const cr = Math.cos(this.roll);\n const cp = Math.cos(this.pitch);\n const cw = Math.cos(this.yaw);\n\n // Create matrix\n return new Matrix4().setRowMajor(\n cw * cp, // 0,0\n -sw * cr + cw * sp * sr, // 0,1\n sw * sr + cw * sp * cr, // 0,2\n this.x, // 0,3\n sw * cp, // 1,0\n cw * cr + sw * sp * sr, // 1,1\n -cw * sr + sw * sp * cr, // 1,2\n this.y, // 1,3\n -sp, // 2,0\n cp * sr, // 2,1\n cp * cr, // 2,2\n this.z, // 2,3\n 0,\n 0,\n 0,\n 1\n );\n }\n\n getTransformationMatrixFromPose(pose: Pose): Matrix4 {\n return new Matrix4()\n .multiplyRight(this.getTransformationMatrix())\n .multiplyRight(pose.getTransformationMatrix().invert());\n }\n\n getTransformationMatrixToPose(pose: Pose): Matrix4 {\n return new Matrix4()\n .multiplyRight(pose.getTransformationMatrix())\n .multiplyRight(this.getTransformationMatrix().invert());\n }\n}\n"],"file":"pose.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NumericArray } from '@math.gl/types';
|
|
2
|
-
import MathArray from './base/math-array';
|
|
3
|
-
export
|
|
2
|
+
import { MathArray } from './base/math-array';
|
|
3
|
+
export declare class Quaternion extends MathArray {
|
|
4
4
|
constructor(x?: number | Readonly<NumericArray>, y?: number, z?: number, w?: number);
|
|
5
5
|
copy(array: Readonly<NumericArray>): this;
|
|
6
6
|
set(x: number, y: number, z: number, w: number): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quaternion.d.ts","sourceRoot":"","sources":["../../src/classes/quaternion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,SAAS,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"quaternion.d.ts","sourceRoot":"","sources":["../../src/classes/quaternion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import MathArray from "./base/math-array.js";
|
|
1
|
+
import { MathArray } from "./base/math-array.js";
|
|
2
2
|
import { checkNumber, checkVector } from "../lib/validators.js";
|
|
3
|
-
import Vector4 from "./vector4.js";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { Vector4 } from "./vector4.js";
|
|
4
|
+
import { fromMat3 as quat_fromMat3, setAxisAngle as quat_setAxisAngle, identity as quat_identity, length as quat_length, squaredLength as quat_squaredLength, dot as quat_dot, rotationTo as quat_rotationTo, add as quat_add, calculateW as quat_calculateW, conjugate as quat_conjugate, invert as quat_invert, lerp as quat_lerp, multiply as quat_multiply, rotateX as quat_rotateX, rotateY as quat_rotateY, rotateZ as quat_rotateZ, scale as quat_scale, slerp as quat_slerp } from "../gl-matrix/quat.js";
|
|
5
|
+
import { transformQuat as vec4_transformQuat } from "../gl-matrix/vec4.js";
|
|
6
6
|
const IDENTITY_QUATERNION = [0, 0, 0, 1];
|
|
7
|
-
export
|
|
7
|
+
export class Quaternion extends MathArray {
|
|
8
8
|
constructor(x = 0, y = 0, z = 0, w = 1) {
|
|
9
9
|
super(-0, -0, -0, -0);
|
|
10
10
|
|
|
@@ -40,17 +40,17 @@ export default class Quaternion extends MathArray {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
fromMatrix3(m) {
|
|
43
|
-
|
|
43
|
+
quat_fromMat3(this, m);
|
|
44
44
|
return this.check();
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
fromAxisRotation(axis, rad) {
|
|
48
|
-
|
|
48
|
+
quat_setAxisAngle(this, axis, rad);
|
|
49
49
|
return this.check();
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
identity() {
|
|
53
|
-
|
|
53
|
+
quat_identity(this);
|
|
54
54
|
return this.check();
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -95,39 +95,39 @@ export default class Quaternion extends MathArray {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
len() {
|
|
98
|
-
return
|
|
98
|
+
return quat_length(this);
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
lengthSquared() {
|
|
102
|
-
return
|
|
102
|
+
return quat_squaredLength(this);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
dot(a) {
|
|
106
|
-
return
|
|
106
|
+
return quat_dot(this, a);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
rotationTo(vectorA, vectorB) {
|
|
110
|
-
|
|
110
|
+
quat_rotationTo(this, vectorA, vectorB);
|
|
111
111
|
return this.check();
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
add(a) {
|
|
115
|
-
|
|
115
|
+
quat_add(this, this, a);
|
|
116
116
|
return this.check();
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
calculateW() {
|
|
120
|
-
|
|
120
|
+
quat_calculateW(this, this);
|
|
121
121
|
return this.check();
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
conjugate() {
|
|
125
|
-
|
|
125
|
+
quat_conjugate(this, this);
|
|
126
126
|
return this.check();
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
invert() {
|
|
130
|
-
|
|
130
|
+
quat_invert(this, this);
|
|
131
131
|
return this.check();
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -136,17 +136,17 @@ export default class Quaternion extends MathArray {
|
|
|
136
136
|
return this.lerp(this, a, b);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
quat_lerp(this, a, b, t);
|
|
140
140
|
return this.check();
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
multiplyRight(a) {
|
|
144
|
-
|
|
144
|
+
quat_multiply(this, this, a);
|
|
145
145
|
return this.check();
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
multiplyLeft(a) {
|
|
149
|
-
|
|
149
|
+
quat_multiply(this, a, this);
|
|
150
150
|
return this.check();
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -166,22 +166,22 @@ export default class Quaternion extends MathArray {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
rotateX(rad) {
|
|
169
|
-
|
|
169
|
+
quat_rotateX(this, this, rad);
|
|
170
170
|
return this.check();
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
rotateY(rad) {
|
|
174
|
-
|
|
174
|
+
quat_rotateY(this, this, rad);
|
|
175
175
|
return this.check();
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
rotateZ(rad) {
|
|
179
|
-
|
|
179
|
+
quat_rotateZ(this, this, rad);
|
|
180
180
|
return this.check();
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
scale(b) {
|
|
184
|
-
|
|
184
|
+
quat_scale(this, this, b);
|
|
185
185
|
return this.check();
|
|
186
186
|
}
|
|
187
187
|
|
|
@@ -211,12 +211,12 @@ export default class Quaternion extends MathArray {
|
|
|
211
211
|
ratio = arg2;
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
|
|
214
|
+
quat_slerp(this, start, target, ratio);
|
|
215
215
|
return this.check();
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
transformVector4(vector, result = new Vector4()) {
|
|
219
|
-
|
|
219
|
+
vec4_transformQuat(result, vector, this);
|
|
220
220
|
return checkVector(result, 4);
|
|
221
221
|
}
|
|
222
222
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/classes/quaternion.ts"],"names":["MathArray","checkNumber","checkVector","Vector4","quat","vec4","IDENTITY_QUATERNION","Quaternion","constructor","x","y","z","w","Array","isArray","arguments","length","copy","set","array","check","fromObject","object","fromMatrix3","m","fromMat3","fromAxisRotation","axis","rad","setAxisAngle","identity","ELEMENTS","value","len","lengthSquared","squaredLength","dot","a","rotationTo","vectorA","vectorB","add","calculateW","conjugate","invert","lerp","b","t","undefined","multiplyRight","multiply","multiplyLeft","normalize","l","rotateX","rotateY","rotateZ","scale","slerp","arg0","arg1","arg2","start","target","ratio","transformVector4","vector","result","transformQuat","lengthSq","setFromAxisAngle","premultiply"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './base/math-array';\nimport {checkNumber, checkVector} from '../lib/validators';\nimport Vector4 from './vector4';\n// @ts-ignore gl-matrix types...\nimport * as quat from 'gl-matrix/quat';\n// @ts-ignore gl-matrix types...\nimport * as vec4 from 'gl-matrix/vec4';\n\nconst IDENTITY_QUATERNION = [0, 0, 0, 1] as const;\n\nexport default class Quaternion extends MathArray {\n constructor(x: number | Readonly<NumericArray> = 0, y = 0, z = 0, w = 1) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0);\n // eslint-disable-next-line prefer-rest-params\n if (Array.isArray(x) && arguments.length === 1) {\n this.copy(x);\n } else {\n this.set(x as number, y, z, w);\n }\n }\n\n copy(array: Readonly<NumericArray>): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n return this.check();\n }\n\n set(x: number, y: number, z: number, w: number): this {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = w;\n return this.check();\n }\n\n fromObject(object: {x: number; y: number; z: number; w: number}): this {\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n this[3] = object.w;\n return this.check();\n }\n\n /**\n * Creates a quaternion from the given 3x3 rotation matrix.\n * NOTE: The resultant quaternion is not normalized, so you should\n * be sure to renormalize the quaternion yourself where necessary.\n * @param m\n * @returns\n */\n fromMatrix3(m: Readonly<NumericArray>): this {\n quat.fromMat3(this, m);\n return this.check();\n }\n\n fromAxisRotation(axis: Readonly<NumericArray>, rad: number): this {\n quat.setAxisAngle(this, axis, rad);\n return this.check();\n }\n\n /** Set a quat to the identity quaternion */\n identity(): this {\n quat.identity(this);\n return this.check();\n }\n\n // Set the components of a quat to the given values\n // set(i, j, k, l) {\n // quat.set(this, i, j, k, l);\n // return this.check();\n // }\n\n // Sets a quat from the given angle and rotation axis, then returns it.\n setAxisAngle(axis: Readonly<NumericArray>, rad: number): this {\n return this.fromAxisRotation(axis, rad);\n }\n\n // Getters/setters\n get ELEMENTS(): number {\n return 4;\n }\n\n get x(): number {\n return this[0];\n }\n set x(value: number) {\n this[0] = checkNumber(value);\n }\n\n get y(): number {\n return this[1];\n }\n set y(value: number) {\n this[1] = checkNumber(value);\n }\n\n get z(): number {\n return this[2];\n }\n set z(value: number) {\n this[2] = checkNumber(value);\n }\n\n get w(): number {\n return this[3];\n }\n set w(value: number) {\n this[3] = checkNumber(value);\n }\n\n // Calculates the length of a quat\n len(): number {\n return quat.length(this);\n }\n\n // Calculates the squared length of a quat\n lengthSquared(): number {\n return quat.squaredLength(this);\n }\n\n // Calculates the dot product of two quat's\n // @return {Number}\n dot(a: Readonly<NumericArray>): number {\n return quat.dot(this, a);\n }\n\n // Gets the rotation axis and angle for a given quaternion.\n // If a quaternion is created with setAxisAngle, this method will\n // return the same values as providied in the original parameter\n // list OR functionally equivalent values.\n // Example: The quaternion formed by axis [0, 0, 1] and angle -90\n // is the same as the quaternion formed by [0, 0, 1] and 270.\n // This method favors the latter.\n // @return {{[x,y,z], Number}}\n // getAxisAngle() {\n // const axis = [];\n // const angle = quat.getAxisAngle(axis, this);\n // return {axis, angle};\n // }\n // MODIFIERS\n // Sets a quaternion to represent the shortest rotation from one vector\n // to another. Both vectors are assumed to be unit length.\n rotationTo(vectorA: NumericArray, vectorB: NumericArray): this {\n quat.rotationTo(this, vectorA, vectorB);\n return this.check();\n }\n\n // Sets the specified quaternion with values corresponding to the given axes.\n // Each axis is a vec3 and is expected to be unit length and perpendicular\n // to all other specified axes.\n // setAxes() {\n // Number\n // }\n // Performs a spherical linear interpolation with two control points\n // sqlerp() {\n // Number;\n // }\n // Adds two quat's\n override add(a: Readonly<NumericArray>): this {\n quat.add(this, this, a);\n return this.check();\n }\n\n // Calculates the W component of a quat from the X, Y, and Z components.\n // Any existing W component will be ignored.\n calculateW(): this {\n quat.calculateW(this, this);\n return this.check();\n }\n\n // Calculates the conjugate of a quat If the quaternion is normalized,\n // this function is faster than quat.inverse and produces the same result.\n conjugate(): this {\n quat.conjugate(this, this);\n return this.check();\n }\n\n // Calculates the inverse of a quat\n invert(): this {\n quat.invert(this, this);\n return this.check();\n }\n\n // Performs a linear interpolation between two quat's\n override lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray> | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n quat.lerp(this, a, b as NumericArray, t);\n return this.check();\n }\n\n // Multiplies two quat's\n multiplyRight(a: Readonly<NumericArray>): this {\n quat.multiply(this, this, a);\n return this.check();\n }\n\n multiplyLeft(a: Readonly<NumericArray>): this {\n quat.multiply(this, a, this);\n return this.check();\n }\n\n // Normalize a quat\n normalize(): this {\n // Handle 0 case\n const length = this.len();\n const l = length > 0 ? 1 / length : 0;\n this[0] = this[0] * l;\n this[1] = this[1] * l;\n this[2] = this[2] * l;\n this[3] = this[3] * l;\n // Set to [0, 0, 0, 1] if length is 0\n if (length === 0) {\n this[3] = 1;\n }\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the X axis\n rotateX(rad: number): this {\n quat.rotateX(this, this, rad);\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the Y axis\n rotateY(rad: number): this {\n quat.rotateY(this, this, rad);\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the Z axis\n rotateZ(rad: number): this {\n quat.rotateZ(this, this, rad);\n return this.check();\n }\n\n // Scales a quat by a scalar number\n override scale(b: number): this {\n quat.scale(this, this, b);\n return this.check();\n }\n\n slerp(target: Readonly<NumericArray>, ratio: number): this;\n slerp(start: Readonly<NumericArray>, target: Readonly<NumericArray>, ratio: number): this;\n slerp(params: {\n start: Readonly<NumericArray>;\n target: Readonly<NumericArray>;\n ratio: number;\n }): this;\n\n // Performs a spherical linear interpolation between two quat\n slerp(\n arg0:\n | Readonly<NumericArray>\n | {\n start: Readonly<NumericArray>;\n target: Readonly<NumericArray>;\n ratio: number;\n },\n arg1?: Readonly<NumericArray> | number,\n arg2?: number\n ): this {\n let start: Readonly<NumericArray>;\n let target: Readonly<NumericArray>;\n let ratio: number;\n // eslint-disable-next-line prefer-rest-params\n switch (arguments.length) {\n case 1: // Deprecated signature ({start, target, ratio})\n // eslint-disable-next-line prefer-rest-params\n ({\n start = IDENTITY_QUATERNION,\n target,\n ratio\n } = arg0 as {\n start: Readonly<NumericArray>;\n target: Readonly<NumericArray>;\n ratio: number;\n });\n break;\n case 2: // THREE.js compatibility signature (target, ration)\n start = this; // eslint-disable-line\n target = arg0 as Readonly<NumericArray>;\n ratio = arg1 as number;\n break;\n default:\n // Default signature: (start, target, ratio)\n start = arg0 as Readonly<NumericArray>;\n target = arg1 as Readonly<NumericArray>;\n ratio = arg2;\n }\n quat.slerp(this, start, target, ratio);\n return this.check();\n }\n\n transformVector4(\n vector: Readonly<NumericArray>,\n result: NumericArray = new Vector4()\n ): NumericArray {\n vec4.transformQuat(result, vector, this);\n return checkVector(result, 4);\n }\n\n // THREE.js Math API compatibility\n lengthSq(): number {\n return this.lengthSquared();\n }\n\n setFromAxisAngle(axis: Readonly<NumericArray>, rad: number): this {\n return this.setAxisAngle(axis, rad);\n }\n\n premultiply(a: Readonly<NumericArray>): this {\n return this.multiplyLeft(a);\n }\n\n multiply(a: Readonly<NumericArray>): this {\n return this.multiplyRight(a);\n }\n}\n"],"file":"quaternion.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/classes/quaternion.ts"],"names":["MathArray","checkNumber","checkVector","Vector4","fromMat3","quat_fromMat3","setAxisAngle","quat_setAxisAngle","identity","quat_identity","length","quat_length","squaredLength","quat_squaredLength","dot","quat_dot","rotationTo","quat_rotationTo","add","quat_add","calculateW","quat_calculateW","conjugate","quat_conjugate","invert","quat_invert","lerp","quat_lerp","multiply","quat_multiply","rotateX","quat_rotateX","rotateY","quat_rotateY","rotateZ","quat_rotateZ","scale","quat_scale","slerp","quat_slerp","transformQuat","vec4_transformQuat","IDENTITY_QUATERNION","Quaternion","constructor","x","y","z","w","Array","isArray","arguments","copy","set","array","check","fromObject","object","fromMatrix3","m","fromAxisRotation","axis","rad","ELEMENTS","value","len","lengthSquared","a","vectorA","vectorB","b","t","undefined","multiplyRight","multiplyLeft","normalize","l","arg0","arg1","arg2","start","target","ratio","transformVector4","vector","result","lengthSq","setFromAxisAngle","premultiply"],"mappings":"SAGQA,S;SACAC,W,EAAaC,W;SACbC,O;SAGNC,QAAQ,IAAIC,a,EACZC,YAAY,IAAIC,iB,EAChBC,QAAQ,IAAIC,a,EACZC,MAAM,IAAIC,W,EACVC,aAAa,IAAIC,kB,EACjBC,GAAG,IAAIC,Q,EAEPC,UAAU,IAAIC,e,EACdC,GAAG,IAAIC,Q,EACPC,UAAU,IAAIC,e,EACdC,SAAS,IAAIC,c,EACbC,MAAM,IAAIC,W,EACVC,IAAI,IAAIC,S,EACRC,QAAQ,IAAIC,a,EACZC,OAAO,IAAIC,Y,EACXC,OAAO,IAAIC,Y,EACXC,OAAO,IAAIC,Y,EACXC,KAAK,IAAIC,U,EACTC,KAAK,IAAIC,U;SAGHC,aAAa,IAAIC,kB;AAEzB,MAAMC,mBAAmB,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAA5B;AAEA,OAAO,MAAMC,UAAN,SAAyB3C,SAAzB,CAAmC;AACxC4C,EAAAA,WAAW,CAACC,CAAkC,GAAG,CAAtC,EAAyCC,CAAC,GAAG,CAA7C,EAAgDC,CAAC,GAAG,CAApD,EAAuDC,CAAC,GAAG,CAA3D,EAA8D;AAEvE,UAAM,CAAC,CAAP,EAAU,CAAC,CAAX,EAAc,CAAC,CAAf,EAAkB,CAAC,CAAnB;;AAEA,QAAIC,KAAK,CAACC,OAAN,CAAcL,CAAd,KAAoBM,SAAS,CAACzC,MAAV,KAAqB,CAA7C,EAAgD;AAC9C,WAAK0C,IAAL,CAAUP,CAAV;AACD,KAFD,MAEO;AACL,WAAKQ,GAAL,CAASR,CAAT,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BC,CAA5B;AACD;AACF;;AAEDI,EAAAA,IAAI,CAACE,KAAD,EAAsC;AACxC,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,SAAK,CAAL,IAAUA,KAAK,CAAC,CAAD,CAAf;AACA,WAAO,KAAKC,KAAL,EAAP;AACD;;AAEDF,EAAAA,GAAG,CAACR,CAAD,EAAYC,CAAZ,EAAuBC,CAAvB,EAAkCC,CAAlC,EAAmD;AACpD,SAAK,CAAL,IAAUH,CAAV;AACA,SAAK,CAAL,IAAUC,CAAV;AACA,SAAK,CAAL,IAAUC,CAAV;AACA,SAAK,CAAL,IAAUC,CAAV;AACA,WAAO,KAAKO,KAAL,EAAP;AACD;;AAEDC,EAAAA,UAAU,CAACC,MAAD,EAA6D;AACrE,SAAK,CAAL,IAAUA,MAAM,CAACZ,CAAjB;AACA,SAAK,CAAL,IAAUY,MAAM,CAACX,CAAjB;AACA,SAAK,CAAL,IAAUW,MAAM,CAACV,CAAjB;AACA,SAAK,CAAL,IAAUU,MAAM,CAACT,CAAjB;AACA,WAAO,KAAKO,KAAL,EAAP;AACD;;AASDG,EAAAA,WAAW,CAACC,CAAD,EAAkC;AAC3CtD,IAAAA,aAAa,CAAC,IAAD,EAAOsD,CAAP,CAAb;AACA,WAAO,KAAKJ,KAAL,EAAP;AACD;;AAEDK,EAAAA,gBAAgB,CAACC,IAAD,EAA+BC,GAA/B,EAAkD;AAChEvD,IAAAA,iBAAiB,CAAC,IAAD,EAAOsD,IAAP,EAAaC,GAAb,CAAjB;AACA,WAAO,KAAKP,KAAL,EAAP;AACD;;AAGD/C,EAAAA,QAAQ,GAAS;AACfC,IAAAA,aAAa,CAAC,IAAD,CAAb;AACA,WAAO,KAAK8C,KAAL,EAAP;AACD;;AASDjD,EAAAA,YAAY,CAACuD,IAAD,EAA+BC,GAA/B,EAAkD;AAC5D,WAAO,KAAKF,gBAAL,CAAsBC,IAAtB,EAA4BC,GAA5B,CAAP;AACD;;AAGW,MAARC,QAAQ,GAAW;AACrB,WAAO,CAAP;AACD;;AAEI,MAADlB,CAAC,GAAW;AACd,WAAO,KAAK,CAAL,CAAP;AACD;;AACI,MAADA,CAAC,CAACmB,KAAD,EAAgB;AACnB,SAAK,CAAL,IAAU/D,WAAW,CAAC+D,KAAD,CAArB;AACD;;AAEI,MAADlB,CAAC,GAAW;AACd,WAAO,KAAK,CAAL,CAAP;AACD;;AACI,MAADA,CAAC,CAACkB,KAAD,EAAgB;AACnB,SAAK,CAAL,IAAU/D,WAAW,CAAC+D,KAAD,CAArB;AACD;;AAEI,MAADjB,CAAC,GAAW;AACd,WAAO,KAAK,CAAL,CAAP;AACD;;AACI,MAADA,CAAC,CAACiB,KAAD,EAAgB;AACnB,SAAK,CAAL,IAAU/D,WAAW,CAAC+D,KAAD,CAArB;AACD;;AAEI,MAADhB,CAAC,GAAW;AACd,WAAO,KAAK,CAAL,CAAP;AACD;;AACI,MAADA,CAAC,CAACgB,KAAD,EAAgB;AACnB,SAAK,CAAL,IAAU/D,WAAW,CAAC+D,KAAD,CAArB;AACD;;AAGDC,EAAAA,GAAG,GAAW;AACZ,WAAOtD,WAAW,CAAC,IAAD,CAAlB;AACD;;AAGDuD,EAAAA,aAAa,GAAW;AACtB,WAAOrD,kBAAkB,CAAC,IAAD,CAAzB;AACD;;AAIDC,EAAAA,GAAG,CAACqD,CAAD,EAAoC;AACrC,WAAOpD,QAAQ,CAAC,IAAD,EAAOoD,CAAP,CAAf;AACD;;AAkBDnD,EAAAA,UAAU,CAACoD,OAAD,EAAwBC,OAAxB,EAAqD;AAC7DpD,IAAAA,eAAe,CAAC,IAAD,EAAOmD,OAAP,EAAgBC,OAAhB,CAAf;AACA,WAAO,KAAKd,KAAL,EAAP;AACD;;AAaQrC,EAAAA,GAAG,CAACiD,CAAD,EAAkC;AAC5ChD,IAAAA,QAAQ,CAAC,IAAD,EAAO,IAAP,EAAagD,CAAb,CAAR;AACA,WAAO,KAAKZ,KAAL,EAAP;AACD;;AAIDnC,EAAAA,UAAU,GAAS;AACjBC,IAAAA,eAAe,CAAC,IAAD,EAAO,IAAP,CAAf;AACA,WAAO,KAAKkC,KAAL,EAAP;AACD;;AAIDjC,EAAAA,SAAS,GAAS;AAChBC,IAAAA,cAAc,CAAC,IAAD,EAAO,IAAP,CAAd;AACA,WAAO,KAAKgC,KAAL,EAAP;AACD;;AAGD/B,EAAAA,MAAM,GAAS;AACbC,IAAAA,WAAW,CAAC,IAAD,EAAO,IAAP,CAAX;AACA,WAAO,KAAK8B,KAAL,EAAP;AACD;;AAGQ7B,EAAAA,IAAI,CAACyC,CAAD,EAA4BG,CAA5B,EAAgEC,CAAhE,EAAkF;AAC7F,QAAIA,CAAC,KAAKC,SAAV,EAAqB;AACnB,aAAO,KAAK9C,IAAL,CAAU,IAAV,EAAgByC,CAAhB,EAAmBG,CAAnB,CAAP;AACD;;AACD3C,IAAAA,SAAS,CAAC,IAAD,EAAOwC,CAAP,EAAUG,CAAV,EAA6BC,CAA7B,CAAT;AACA,WAAO,KAAKhB,KAAL,EAAP;AACD;;AAGDkB,EAAAA,aAAa,CAACN,CAAD,EAAkC;AAC7CtC,IAAAA,aAAa,CAAC,IAAD,EAAO,IAAP,EAAasC,CAAb,CAAb;AACA,WAAO,KAAKZ,KAAL,EAAP;AACD;;AAEDmB,EAAAA,YAAY,CAACP,CAAD,EAAkC;AAC5CtC,IAAAA,aAAa,CAAC,IAAD,EAAOsC,CAAP,EAAU,IAAV,CAAb;AACA,WAAO,KAAKZ,KAAL,EAAP;AACD;;AAGDoB,EAAAA,SAAS,GAAS;AAEhB,UAAMjE,MAAM,GAAG,KAAKuD,GAAL,EAAf;AACA,UAAMW,CAAC,GAAGlE,MAAM,GAAG,CAAT,GAAa,IAAIA,MAAjB,GAA0B,CAApC;AACA,SAAK,CAAL,IAAU,KAAK,CAAL,IAAUkE,CAApB;AACA,SAAK,CAAL,IAAU,KAAK,CAAL,IAAUA,CAApB;AACA,SAAK,CAAL,IAAU,KAAK,CAAL,IAAUA,CAApB;AACA,SAAK,CAAL,IAAU,KAAK,CAAL,IAAUA,CAApB;;AAEA,QAAIlE,MAAM,KAAK,CAAf,EAAkB;AAChB,WAAK,CAAL,IAAU,CAAV;AACD;;AACD,WAAO,KAAK6C,KAAL,EAAP;AACD;;AAGDzB,EAAAA,OAAO,CAACgC,GAAD,EAAoB;AACzB/B,IAAAA,YAAY,CAAC,IAAD,EAAO,IAAP,EAAa+B,GAAb,CAAZ;AACA,WAAO,KAAKP,KAAL,EAAP;AACD;;AAGDvB,EAAAA,OAAO,CAAC8B,GAAD,EAAoB;AACzB7B,IAAAA,YAAY,CAAC,IAAD,EAAO,IAAP,EAAa6B,GAAb,CAAZ;AACA,WAAO,KAAKP,KAAL,EAAP;AACD;;AAGDrB,EAAAA,OAAO,CAAC4B,GAAD,EAAoB;AACzB3B,IAAAA,YAAY,CAAC,IAAD,EAAO,IAAP,EAAa2B,GAAb,CAAZ;AACA,WAAO,KAAKP,KAAL,EAAP;AACD;;AAGQnB,EAAAA,KAAK,CAACkC,CAAD,EAAkB;AAC9BjC,IAAAA,UAAU,CAAC,IAAD,EAAO,IAAP,EAAaiC,CAAb,CAAV;AACA,WAAO,KAAKf,KAAL,EAAP;AACD;;AAWDjB,EAAAA,KAAK,CACHuC,IADG,EAQHC,IARG,EASHC,IATG,EAUG;AACN,QAAIC,KAAJ;AACA,QAAIC,MAAJ;AACA,QAAIC,KAAJ;;AAEA,YAAQ/B,SAAS,CAACzC,MAAlB;AACE,WAAK,CAAL;AAEE,SAAC;AACCsE,UAAAA,KAAK,GAAGtC,mBADT;AAECuC,UAAAA,MAFD;AAGCC,UAAAA;AAHD,YAIGL,IAJJ;AASA;;AACF,WAAK,CAAL;AACEG,QAAAA,KAAK,GAAG,IAAR;AACAC,QAAAA,MAAM,GAAGJ,IAAT;AACAK,QAAAA,KAAK,GAAGJ,IAAR;AACA;;AACF;AAEEE,QAAAA,KAAK,GAAGH,IAAR;AACAI,QAAAA,MAAM,GAAGH,IAAT;AACAI,QAAAA,KAAK,GAAGH,IAAR;AAtBJ;;AAwBAxC,IAAAA,UAAU,CAAC,IAAD,EAAOyC,KAAP,EAAcC,MAAd,EAAsBC,KAAtB,CAAV;AACA,WAAO,KAAK3B,KAAL,EAAP;AACD;;AAED4B,EAAAA,gBAAgB,CACdC,MADc,EAEdC,MAAoB,GAAG,IAAIlF,OAAJ,EAFT,EAGA;AACdsC,IAAAA,kBAAkB,CAAC4C,MAAD,EAASD,MAAT,EAAiB,IAAjB,CAAlB;AACA,WAAOlF,WAAW,CAACmF,MAAD,EAAS,CAAT,CAAlB;AACD;;AAGDC,EAAAA,QAAQ,GAAW;AACjB,WAAO,KAAKpB,aAAL,EAAP;AACD;;AAEDqB,EAAAA,gBAAgB,CAAC1B,IAAD,EAA+BC,GAA/B,EAAkD;AAChE,WAAO,KAAKxD,YAAL,CAAkBuD,IAAlB,EAAwBC,GAAxB,CAAP;AACD;;AAED0B,EAAAA,WAAW,CAACrB,CAAD,EAAkC;AAC3C,WAAO,KAAKO,YAAL,CAAkBP,CAAlB,CAAP;AACD;;AAEDvC,EAAAA,QAAQ,CAACuC,CAAD,EAAkC;AACxC,WAAO,KAAKM,aAAL,CAAmBN,CAAnB,CAAP;AACD;;AAvTuC","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport {MathArray} from './base/math-array';\nimport {checkNumber, checkVector} from '../lib/validators';\nimport {Vector4} from './vector4';\n// @ts-ignore gl-matrix types...\nimport {\n fromMat3 as quat_fromMat3,\n setAxisAngle as quat_setAxisAngle,\n identity as quat_identity,\n length as quat_length,\n squaredLength as quat_squaredLength,\n dot as quat_dot,\n // getAxisAngle as quat_getAxisAngle,\n rotationTo as quat_rotationTo,\n add as quat_add,\n calculateW as quat_calculateW,\n conjugate as quat_conjugate,\n invert as quat_invert,\n lerp as quat_lerp,\n multiply as quat_multiply,\n rotateX as quat_rotateX,\n rotateY as quat_rotateY,\n rotateZ as quat_rotateZ,\n scale as quat_scale,\n slerp as quat_slerp\n} from '../gl-matrix/quat';\n// @ts-ignore gl-matrix types...\nimport {transformQuat as vec4_transformQuat} from '../gl-matrix/vec4';\n\nconst IDENTITY_QUATERNION = [0, 0, 0, 1] as const;\n\nexport class Quaternion extends MathArray {\n constructor(x: number | Readonly<NumericArray> = 0, y = 0, z = 0, w = 1) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0);\n // eslint-disable-next-line prefer-rest-params\n if (Array.isArray(x) && arguments.length === 1) {\n this.copy(x);\n } else {\n this.set(x as number, y, z, w);\n }\n }\n\n copy(array: Readonly<NumericArray>): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n return this.check();\n }\n\n set(x: number, y: number, z: number, w: number): this {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = w;\n return this.check();\n }\n\n fromObject(object: {x: number; y: number; z: number; w: number}): this {\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n this[3] = object.w;\n return this.check();\n }\n\n /**\n * Creates a quaternion from the given 3x3 rotation matrix.\n * NOTE: The resultant quaternion is not normalized, so you should\n * be sure to renormalize the quaternion yourself where necessary.\n * @param m\n * @returns\n */\n fromMatrix3(m: Readonly<NumericArray>): this {\n quat_fromMat3(this, m);\n return this.check();\n }\n\n fromAxisRotation(axis: Readonly<NumericArray>, rad: number): this {\n quat_setAxisAngle(this, axis, rad);\n return this.check();\n }\n\n /** Set a quat to the identity quaternion */\n identity(): this {\n quat_identity(this);\n return this.check();\n }\n\n // Set the components of a quat to the given values\n // set(i, j, k, l) {\n // quat_set(this, i, j, k, l);\n // return this.check();\n // }\n\n // Sets a quat from the given angle and rotation axis, then returns it.\n setAxisAngle(axis: Readonly<NumericArray>, rad: number): this {\n return this.fromAxisRotation(axis, rad);\n }\n\n // Getters/setters\n get ELEMENTS(): number {\n return 4;\n }\n\n get x(): number {\n return this[0];\n }\n set x(value: number) {\n this[0] = checkNumber(value);\n }\n\n get y(): number {\n return this[1];\n }\n set y(value: number) {\n this[1] = checkNumber(value);\n }\n\n get z(): number {\n return this[2];\n }\n set z(value: number) {\n this[2] = checkNumber(value);\n }\n\n get w(): number {\n return this[3];\n }\n set w(value: number) {\n this[3] = checkNumber(value);\n }\n\n // Calculates the length of a quat\n len(): number {\n return quat_length(this);\n }\n\n // Calculates the squared length of a quat\n lengthSquared(): number {\n return quat_squaredLength(this);\n }\n\n // Calculates the dot product of two quat's\n // @return {Number}\n dot(a: Readonly<NumericArray>): number {\n return quat_dot(this, a);\n }\n\n // Gets the rotation axis and angle for a given quaternion.\n // If a quaternion is created with setAxisAngle, this method will\n // return the same values as providied in the original parameter\n // list OR functionally equivalent values.\n // Example: The quaternion formed by axis [0, 0, 1] and angle -90\n // is the same as the quaternion formed by [0, 0, 1] and 270.\n // This method favors the latter.\n // @return {{[x,y,z], Number}}\n // getAxisAngle() {\n // const axis = [];\n // // const angle = quat_getAxisAngle(axis, this);\n // return {axis, angle};\n // }\n // MODIFIERS\n // Sets a quaternion to represent the shortest rotation from one vector\n // to another. Both vectors are assumed to be unit length.\n rotationTo(vectorA: NumericArray, vectorB: NumericArray): this {\n quat_rotationTo(this, vectorA, vectorB);\n return this.check();\n }\n\n // Sets the specified quaternion with values corresponding to the given axes.\n // Each axis is a vec3 and is expected to be unit length and perpendicular\n // to all other specified axes.\n // setAxes() {\n // Number\n // }\n // Performs a spherical linear interpolation with two control points\n // sqlerp() {\n // Number;\n // }\n // Adds two quat's\n override add(a: Readonly<NumericArray>): this {\n quat_add(this, this, a);\n return this.check();\n }\n\n // Calculates the W component of a quat from the X, Y, and Z components.\n // Any existing W component will be ignored.\n calculateW(): this {\n quat_calculateW(this, this);\n return this.check();\n }\n\n // Calculates the conjugate of a quat If the quaternion is normalized,\n // this function is faster than quat_invert and produces the same result.\n conjugate(): this {\n quat_conjugate(this, this);\n return this.check();\n }\n\n // Calculates the inverse of a quat\n invert(): this {\n quat_invert(this, this);\n return this.check();\n }\n\n // Performs a linear interpolation between two quat's\n override lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray> | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n quat_lerp(this, a, b as NumericArray, t);\n return this.check();\n }\n\n // Multiplies two quat's\n multiplyRight(a: Readonly<NumericArray>): this {\n quat_multiply(this, this, a);\n return this.check();\n }\n\n multiplyLeft(a: Readonly<NumericArray>): this {\n quat_multiply(this, a, this);\n return this.check();\n }\n\n // Normalize a quat\n normalize(): this {\n // Handle 0 case\n const length = this.len();\n const l = length > 0 ? 1 / length : 0;\n this[0] = this[0] * l;\n this[1] = this[1] * l;\n this[2] = this[2] * l;\n this[3] = this[3] * l;\n // Set to [0, 0, 0, 1] if length is 0\n if (length === 0) {\n this[3] = 1;\n }\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the X axis\n rotateX(rad: number): this {\n quat_rotateX(this, this, rad);\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the Y axis\n rotateY(rad: number): this {\n quat_rotateY(this, this, rad);\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the Z axis\n rotateZ(rad: number): this {\n quat_rotateZ(this, this, rad);\n return this.check();\n }\n\n // Scales a quat by a scalar number\n override scale(b: number): this {\n quat_scale(this, this, b);\n return this.check();\n }\n\n slerp(target: Readonly<NumericArray>, ratio: number): this;\n slerp(start: Readonly<NumericArray>, target: Readonly<NumericArray>, ratio: number): this;\n slerp(params: {\n start: Readonly<NumericArray>;\n target: Readonly<NumericArray>;\n ratio: number;\n }): this;\n\n // Performs a spherical linear interpolation between two quat\n slerp(\n arg0:\n | Readonly<NumericArray>\n | {\n start: Readonly<NumericArray>;\n target: Readonly<NumericArray>;\n ratio: number;\n },\n arg1?: Readonly<NumericArray> | number,\n arg2?: number\n ): this {\n let start: Readonly<NumericArray>;\n let target: Readonly<NumericArray>;\n let ratio: number;\n // eslint-disable-next-line prefer-rest-params\n switch (arguments.length) {\n case 1: // Deprecated signature ({start, target, ratio})\n // eslint-disable-next-line prefer-rest-params\n ({\n start = IDENTITY_QUATERNION,\n target,\n ratio\n } = arg0 as {\n start: Readonly<NumericArray>;\n target: Readonly<NumericArray>;\n ratio: number;\n });\n break;\n case 2: // THREE.js compatibility signature (target, ration)\n start = this; // eslint-disable-line\n target = arg0 as Readonly<NumericArray>;\n ratio = arg1 as number;\n break;\n default:\n // Default signature: (start, target, ratio)\n start = arg0 as Readonly<NumericArray>;\n target = arg1 as Readonly<NumericArray>;\n ratio = arg2;\n }\n quat_slerp(this, start, target, ratio);\n return this.check();\n }\n\n transformVector4(\n vector: Readonly<NumericArray>,\n result: NumericArray = new Vector4()\n ): NumericArray {\n vec4_transformQuat(result, vector, this);\n return checkVector(result, 4);\n }\n\n // THREE.js Math API compatibility\n lengthSq(): number {\n return this.lengthSquared();\n }\n\n setFromAxisAngle(axis: Readonly<NumericArray>, rad: number): this {\n return this.setAxisAngle(axis, rad);\n }\n\n premultiply(a: Readonly<NumericArray>): this {\n return this.multiplyLeft(a);\n }\n\n multiply(a: Readonly<NumericArray>): this {\n return this.multiplyRight(a);\n }\n}\n"],"file":"quaternion.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NumericArray } from '@math.gl/types';
|
|
2
|
-
import Vector3 from './vector3';
|
|
3
|
-
type SphericalCoordinatesOptions = {
|
|
2
|
+
import { Vector3 } from './vector3';
|
|
3
|
+
declare type SphericalCoordinatesOptions = {
|
|
4
4
|
phi?: number;
|
|
5
5
|
theta?: number;
|
|
6
6
|
radius?: number;
|
|
@@ -9,7 +9,7 @@ type SphericalCoordinatesOptions = {
|
|
|
9
9
|
altitude?: number;
|
|
10
10
|
radiusScale?: number;
|
|
11
11
|
};
|
|
12
|
-
type FormatOptions = {
|
|
12
|
+
declare type FormatOptions = {
|
|
13
13
|
printTypes?: boolean;
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
@@ -17,7 +17,7 @@ type FormatOptions = {
|
|
|
17
17
|
* The equator starts at positive z.
|
|
18
18
|
* @link https://en.wikipedia.org/wiki/Spherical_coordinate_system
|
|
19
19
|
*/
|
|
20
|
-
export
|
|
20
|
+
export declare class SphericalCoordinates {
|
|
21
21
|
phi: number;
|
|
22
22
|
theta: number;
|
|
23
23
|
radius: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spherical-coordinates.d.ts","sourceRoot":"","sources":["../../src/classes/spherical-coordinates.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,OAAO,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"spherical-coordinates.d.ts","sourceRoot":"","sources":["../../src/classes/spherical-coordinates.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAMlC,aAAK,2BAA2B,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,aAAK,aAAa,GAAG;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAMF;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAYpB;;;;;;;;;;OAUG;gBAES,EACV,GAAO,EACP,KAAS,EACT,MAAU,EACV,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAiC,EAClC,GAAE,2BAAgC;IAenC,QAAQ,IAAI,MAAM;IAIlB,YAAY,CAAC,EAAC,UAAkB,EAAC,EAAE,aAAa,GAAG,MAAM;IAMzD,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAQ5C,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAMjD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,EAEpB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAElB;IAMD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,CAAC,IAAI,MAAM,CAEd;IAGD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOrD,KAAK,IAAI,oBAAoB;IAI7B,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAOvC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAO1D,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAS5C,SAAS,IAAI,OAAO;IAOpB,QAAQ,IAAI,IAAI;IAKhB,KAAK,IAAI,IAAI;CAOd"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import Vector3 from "./vector3.js";
|
|
2
|
+
import { Vector3 } from "./vector3.js";
|
|
3
3
|
import { formatValue, equals, config } from "../lib/common.js";
|
|
4
4
|
import { degrees, radians, clamp } from "../lib/common.js";
|
|
5
|
-
import * as vec3 from
|
|
5
|
+
import * as vec3 from "../gl-matrix/vec3.js";
|
|
6
6
|
const EPSILON = 0.000001;
|
|
7
7
|
const EARTH_RADIUS_METERS = 6371000;
|
|
8
|
-
export
|
|
8
|
+
export class SphericalCoordinates {
|
|
9
9
|
constructor({
|
|
10
10
|
phi = 0,
|
|
11
11
|
theta = 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/classes/spherical-coordinates.ts"],"names":["Vector3","formatValue","equals","config","degrees","radians","clamp","vec3","EPSILON","EARTH_RADIUS_METERS","SphericalCoordinates","constructor","phi","theta","radius","bearing","pitch","altitude","radiusScale","undefined","check","toString","formatString","printTypes","f","other","exactEquals","v","Math","PI","longitude","latitude","lng","lat","z","set","clone","copy","fromLngLatZ","fromVector3","length","atan2","acos","toVector3","rotateX","rotateZ","makeSafe","max","min","Number","isFinite","Error"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../src/classes/spherical-coordinates.ts"],"names":["Vector3","formatValue","equals","config","degrees","radians","clamp","vec3","EPSILON","EARTH_RADIUS_METERS","SphericalCoordinates","constructor","phi","theta","radius","bearing","pitch","altitude","radiusScale","undefined","check","toString","formatString","printTypes","f","other","exactEquals","v","Math","PI","longitude","latitude","lng","lat","z","set","clone","copy","fromLngLatZ","fromVector3","length","atan2","acos","toVector3","rotateX","rotateZ","makeSafe","max","min","Number","isFinite","Error"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\n// Adaptation of THREE.js Spherical class, under MIT license\nimport {NumericArray} from '@math.gl/types';\nimport {Vector3} from './vector3';\nimport {formatValue, equals, config} from '../lib/common';\nimport {degrees, radians, clamp} from '../lib/common';\n// @ts-ignore gl-matrix types...\nimport * as vec3 from '../gl-matrix/vec3';\n\ntype SphericalCoordinatesOptions = {\n phi?: number;\n theta?: number;\n radius?: number;\n bearing?: number;\n pitch?: number;\n altitude?: number;\n radiusScale?: number;\n};\n\ntype FormatOptions = {\n printTypes?: boolean;\n};\n\n// TODO - import epsilon\nconst EPSILON = 0.000001;\nconst EARTH_RADIUS_METERS = 6371000;\n\n/**\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n * @link https://en.wikipedia.org/wiki/Spherical_coordinate_system\n */\nexport class SphericalCoordinates {\n phi: number;\n theta: number;\n radius: number;\n radiusScale: number;\n // bearing: number;\n // pitch: number;\n // altitude: number;\n\n // lnglatZ coordinates\n // longitude: number;\n // latitude: number;\n // lng: number;\n // lat: number;\n // z: number;\n\n /**\n * Creates a new SphericalCoordinates object\n * @param options\n * @param [options.phi] =0 - rotation around X (latitude)\n * @param [options.theta] =0 - rotation around Y (longitude)\n * @param [options.radius] =1 - Distance from center\n * @param [options.bearing]\n * @param [options.pitch]\n * @param [options.altitude]\n * @param [options.radiusScale] =1\n */\n // eslint-disable-next-line complexity\n constructor({\n phi = 0,\n theta = 0,\n radius = 1,\n bearing,\n pitch,\n altitude,\n radiusScale = EARTH_RADIUS_METERS\n }: SphericalCoordinatesOptions = {}) {\n this.phi = phi;\n this.theta = theta;\n // TODO - silently accepts illegal 0\n this.radius = radius || altitude || 1; // radial distance from center\n this.radiusScale = radiusScale || 1; // Used by lngLatZ\n if (bearing !== undefined) {\n this.bearing = bearing; // up / down towards top and bottom pole\n }\n if (pitch !== undefined) {\n this.pitch = pitch; // around the equator of the sphere\n }\n this.check();\n }\n\n toString(): string {\n return this.formatString(config);\n }\n\n formatString({printTypes = false}: FormatOptions): string {\n const f = formatValue;\n return `${printTypes ? 'Spherical' : ''}\\\n[rho:${f(this.radius)},theta:${f(this.theta)},phi:${f(this.phi)}]`;\n }\n\n equals(other: SphericalCoordinates): boolean {\n return (\n equals(this.radius, other.radius) &&\n equals(this.theta, other.theta) &&\n equals(this.phi, other.phi)\n );\n }\n\n exactEquals(other: SphericalCoordinates): boolean {\n return this.radius === other.radius && this.theta === other.theta && this.phi === other.phi;\n }\n\n /* eslint-disable brace-style */\n // Cartographic (bearing 0 north, pitch 0 look from above)\n get bearing(): number {\n return 180 - degrees(this.phi);\n }\n\n set bearing(v: number) {\n this.phi = Math.PI - radians(v);\n }\n\n get pitch(): number {\n return degrees(this.theta);\n }\n\n set pitch(v: number) {\n this.theta = radians(v);\n }\n\n // get pitch() { return 90 - degrees(this.phi); }\n // set pitch(v) { this.phi = radians(v) + Math.PI / 2; }\n // get altitude() { return this.radius - 1; } // relative altitude\n // lnglatZ coordinates\n get longitude(): number {\n return degrees(this.phi);\n }\n\n get latitude(): number {\n return degrees(this.theta);\n }\n\n get lng(): number {\n return degrees(this.phi);\n }\n\n get lat(): number {\n return degrees(this.theta);\n }\n\n get z(): number {\n return (this.radius - 1) * this.radiusScale;\n }\n\n /* eslint-enable brace-style */\n set(radius: number, phi: number, theta: number): this {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this.check();\n }\n\n clone(): SphericalCoordinates {\n return new SphericalCoordinates().copy(this);\n }\n\n copy(other: SphericalCoordinates): this {\n this.radius = other.radius;\n this.phi = other.phi;\n this.theta = other.theta;\n return this.check();\n }\n\n fromLngLatZ([lng, lat, z]: [number, number, number]): this {\n this.radius = 1 + z / this.radiusScale;\n this.phi = radians(lat);\n this.theta = radians(lng);\n return this.check();\n }\n\n fromVector3(v: Readonly<NumericArray>): this {\n this.radius = vec3.length(v);\n if (this.radius > 0) {\n this.theta = Math.atan2(v[0], v[1]); // equator angle around y-up axis\n this.phi = Math.acos(clamp(v[2] / this.radius, -1, 1)); // polar angle\n }\n return this.check();\n }\n\n toVector3(): Vector3 {\n return new Vector3(0, 0, this.radius)\n .rotateX({radians: this.theta})\n .rotateZ({radians: this.phi});\n }\n\n // restrict phi to be betwee EPS and PI-EPS\n makeSafe(): this {\n this.phi = Math.max(EPSILON, Math.min(Math.PI - EPSILON, this.phi));\n return this;\n }\n\n check(): this {\n // this.makeSafe();\n if (!Number.isFinite(this.phi) || !Number.isFinite(this.theta) || !(this.radius > 0)) {\n throw new Error('SphericalCoordinates: some fields set to invalid numbers');\n }\n return this;\n }\n}\n"],"file":"spherical-coordinates.js"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import Vector from './base/vector';
|
|
1
|
+
import { Vector } from './base/vector';
|
|
2
2
|
import { NumericArray } from '@math.gl/types';
|
|
3
3
|
/**
|
|
4
4
|
* Two-element vector class.
|
|
5
5
|
* Subclass of Array<number>
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export declare class Vector2 extends Vector {
|
|
8
8
|
constructor(x?: number | Readonly<NumericArray>, y?: number);
|
|
9
9
|
set(x: number, y: number): this;
|
|
10
10
|
copy(array: Readonly<NumericArray>): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector2.d.ts","sourceRoot":"","sources":["../../src/classes/vector2.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"vector2.d.ts","sourceRoot":"","sources":["../../src/classes/vector2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAUrC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,MAAM;gBAErB,CAAC,GAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAK,EAAE,CAAC,GAAE,MAAU;IAejE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/B,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAMzC,UAAU,CAAC,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI;IAUvC,QAAQ,CAAC,MAAM,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC;IAQ3E,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,aAAa,IAAI,MAAM;IAMvB;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAIhD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKvD;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKxD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAK7D,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;CAI1D"}
|
package/dist/classes/vector2.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import Vector from "./base/vector.js";
|
|
1
|
+
import { Vector } from "./base/vector.js";
|
|
2
2
|
import { config, isArray } from "../lib/common.js";
|
|
3
3
|
import { checkNumber } from "../lib/validators.js";
|
|
4
|
-
import
|
|
4
|
+
import { transformMat4 as vec2_transformMat4, transformMat3 as vec2_transformMat3, transformMat2d as vec2_transformMat2d, transformMat2 as vec2_transformMat2 } from "../gl-matrix/vec2.js";
|
|
5
5
|
import { vec2_transformMat4AsVector } from "../lib/gl-matrix-extras.js";
|
|
6
|
-
export
|
|
6
|
+
export class Vector2 extends Vector {
|
|
7
7
|
constructor(x = 0, y = 0) {
|
|
8
8
|
super(2);
|
|
9
9
|
|
|
@@ -66,7 +66,7 @@ export default class Vector2 extends Vector {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
transformAsPoint(matrix4) {
|
|
69
|
-
|
|
69
|
+
vec2_transformMat4(this, this, matrix4);
|
|
70
70
|
return this.check();
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -76,17 +76,17 @@ export default class Vector2 extends Vector {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
transformByMatrix3(matrix3) {
|
|
79
|
-
|
|
79
|
+
vec2_transformMat3(this, this, matrix3);
|
|
80
80
|
return this.check();
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
transformByMatrix2x3(matrix2x3) {
|
|
84
|
-
|
|
84
|
+
vec2_transformMat2d(this, this, matrix2x3);
|
|
85
85
|
return this.check();
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
transformByMatrix2(matrix2) {
|
|
89
|
-
|
|
89
|
+
vec2_transformMat2(this, this, matrix2);
|
|
90
90
|
return this.check();
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/classes/vector2.ts"],"names":["Vector","config","isArray","checkNumber","
|
|
1
|
+
{"version":3,"sources":["../../src/classes/vector2.ts"],"names":["Vector","config","isArray","checkNumber","transformMat4","vec2_transformMat4","transformMat3","vec2_transformMat3","transformMat2d","vec2_transformMat2d","transformMat2","vec2_transformMat2","vec2_transformMat4AsVector","Vector2","constructor","x","y","arguments","length","copy","debug","set","check","array","fromObject","object","toObject","ELEMENTS","horizontalAngle","Math","atan2","verticalAngle","transform","matrix4","transformAsPoint","transformAsVector","transformByMatrix3","matrix3","transformByMatrix2x3","matrix2x3","transformByMatrix2","matrix2"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {Vector} from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport {\n transformMat4 as vec2_transformMat4,\n transformMat3 as vec2_transformMat3,\n transformMat2d as vec2_transformMat2d,\n transformMat2 as vec2_transformMat2\n} from '../gl-matrix/vec2';\nimport {vec2_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport {NumericArray} from '@math.gl/types';\n\n/**\n * Two-element vector class.\n * Subclass of Array<number>\n */\nexport class Vector2 extends Vector {\n // Creates a new, empty vec2\n constructor(x: number | Readonly<NumericArray> = 0, y: number = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(2); // -0, -0);\n if (isArray(x) && arguments.length === 1) {\n this.copy(x as Readonly<NumericArray>);\n } else {\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n }\n this[0] = x as number;\n this[1] = y;\n }\n }\n\n set(x: number, y: number): this {\n this[0] = x;\n this[1] = y;\n return this.check();\n }\n\n copy(array: Readonly<NumericArray>): this {\n this[0] = array[0];\n this[1] = array[1];\n return this.check();\n }\n\n fromObject(object: {x: number; y: number}): this {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n }\n this[0] = object.x;\n this[1] = object.y;\n return this.check();\n }\n\n override toObject(object: {x?: number; y?: number}): {x: number; y: number} {\n object.x = this[0];\n object.y = this[1];\n return object as {x: number; y: number};\n }\n\n // Getters/setters\n\n get ELEMENTS(): number {\n return 2;\n }\n\n /**\n * Returns angle from x axis\n * @returns\n */\n horizontalAngle(): number {\n return Math.atan2(this.y, this.x);\n }\n\n /**\n * Returns angle from y axis\n * @returns\n */\n verticalAngle(): number {\n return Math.atan2(this.x, this.y);\n }\n\n // Transforms\n\n /**\n * Transforms as point\n * @param matrix4\n * @returns\n */\n transform(matrix4: Readonly<NumericArray>): this {\n return this.transformAsPoint(matrix4);\n }\n\n /**\n * transforms as point (4th component is implicitly 1)\n * @param matrix4\n * @returns\n */\n transformAsPoint(matrix4: Readonly<NumericArray>): this {\n vec2_transformMat4(this, this, matrix4);\n return this.check();\n }\n\n /**\n * transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n * @param matrix4\n * @returns\n */\n transformAsVector(matrix4: Readonly<NumericArray>): this {\n vec2_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3: Readonly<NumericArray>): this {\n vec2_transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2x3(matrix2x3: Readonly<NumericArray>): this {\n vec2_transformMat2d(this, this, matrix2x3);\n return this.check();\n }\n\n transformByMatrix2(matrix2: Readonly<NumericArray>): this {\n vec2_transformMat2(this, this, matrix2);\n return this.check();\n }\n}\n"],"file":"vector2.js"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NumericArray } from '@math.gl/types';
|
|
2
|
-
import Vector from './base/vector';
|
|
2
|
+
import { Vector } from './base/vector';
|
|
3
3
|
/**
|
|
4
4
|
* Three-element vector class.
|
|
5
5
|
* Subclass of Array<number>
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export declare class Vector3 extends Vector {
|
|
8
8
|
static get ZERO(): Vector3;
|
|
9
9
|
/**
|
|
10
10
|
* @class
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector3.d.ts","sourceRoot":"","sources":["../../src/classes/vector3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"vector3.d.ts","sourceRoot":"","sources":["../../src/classes/vector3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAqBrC;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,MAAM;IACjC,MAAM,KAAK,IAAI,IAAI,OAAO,CAMzB;IAED;;;;;OAKG;gBACS,CAAC,GAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAK,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU;IAmBhF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1C,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAOzC,UAAU,CAAC,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI;IAYlD,QAAQ,CAAC,MAAM,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG;QAC/D,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX;IASD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,CAAC,IAAI,MAAM,CAEd;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAID,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAM7C,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAK3C,OAAO,CAAC,EAAC,OAAO,EAAE,MAAe,EAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAAC,GAAG,IAAI;IAK7F,OAAO,CAAC,EAAC,OAAO,EAAE,MAAe,EAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAAC,GAAG,IAAI;IAK7F,OAAO,CAAC,EAAC,OAAO,EAAE,MAAe,EAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAAC,GAAG,IAAI;IAQ7F,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKhD,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAMvD,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKxD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;CAIhE"}
|
package/dist/classes/vector3.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import Vector from "./base/vector.js";
|
|
1
|
+
import { Vector } from "./base/vector.js";
|
|
2
2
|
import { config, isArray } from "../lib/common.js";
|
|
3
3
|
import { checkNumber } from "../lib/validators.js";
|
|
4
|
-
import
|
|
4
|
+
import { angle as vec3_angle, cross as vec3_cross, rotateX as vec3_rotateX, rotateY as vec3_rotateY, rotateZ as vec3_rotateZ, transformMat4 as vec3_transformMat4, transformMat3 as vec3_transformMat3, transformQuat as vec3_transformQuat } from "../gl-matrix/vec3.js";
|
|
5
5
|
import { vec3_transformMat2, vec3_transformMat4AsVector } from "../lib/gl-matrix-extras.js";
|
|
6
6
|
const ORIGIN = [0, 0, 0];
|
|
7
7
|
let ZERO;
|
|
8
|
-
export
|
|
8
|
+
export class Vector3 extends Vector {
|
|
9
9
|
static get ZERO() {
|
|
10
10
|
if (!ZERO) {
|
|
11
11
|
ZERO = new Vector3(0, 0, 0);
|
|
@@ -80,11 +80,11 @@ export default class Vector3 extends Vector {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
angle(vector) {
|
|
83
|
-
return
|
|
83
|
+
return vec3_angle(this, vector);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
cross(vector) {
|
|
87
|
-
|
|
87
|
+
vec3_cross(this, this, vector);
|
|
88
88
|
return this.check();
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -92,7 +92,7 @@ export default class Vector3 extends Vector {
|
|
|
92
92
|
radians,
|
|
93
93
|
origin = ORIGIN
|
|
94
94
|
}) {
|
|
95
|
-
|
|
95
|
+
vec3_rotateX(this, this, origin, radians);
|
|
96
96
|
return this.check();
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -100,7 +100,7 @@ export default class Vector3 extends Vector {
|
|
|
100
100
|
radians,
|
|
101
101
|
origin = ORIGIN
|
|
102
102
|
}) {
|
|
103
|
-
|
|
103
|
+
vec3_rotateY(this, this, origin, radians);
|
|
104
104
|
return this.check();
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -108,7 +108,7 @@ export default class Vector3 extends Vector {
|
|
|
108
108
|
radians,
|
|
109
109
|
origin = ORIGIN
|
|
110
110
|
}) {
|
|
111
|
-
|
|
111
|
+
vec3_rotateZ(this, this, origin, radians);
|
|
112
112
|
return this.check();
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -117,7 +117,7 @@ export default class Vector3 extends Vector {
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
transformAsPoint(matrix4) {
|
|
120
|
-
|
|
120
|
+
vec3_transformMat4(this, this, matrix4);
|
|
121
121
|
return this.check();
|
|
122
122
|
}
|
|
123
123
|
|
|
@@ -127,7 +127,7 @@ export default class Vector3 extends Vector {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
transformByMatrix3(matrix3) {
|
|
130
|
-
|
|
130
|
+
vec3_transformMat3(this, this, matrix3);
|
|
131
131
|
return this.check();
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -137,7 +137,7 @@ export default class Vector3 extends Vector {
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
transformByQuaternion(quaternion) {
|
|
140
|
-
|
|
140
|
+
vec3_transformQuat(this, this, quaternion);
|
|
141
141
|
return this.check();
|
|
142
142
|
}
|
|
143
143
|
|