@flighthq/geometry 0.3.0 → 0.3.1-next.1041.35b950c
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/aabb.d.ts +1 -0
- package/dist/aabb.d.ts.map +1 -1
- package/dist/aabb.js +58 -38
- package/dist/aabb.js.map +1 -1
- package/dist/boundingSphere.d.ts.map +1 -1
- package/dist/boundingSphere.js +3 -2
- package/dist/boundingSphere.js.map +1 -1
- package/dist/capsule.d.ts +6 -5
- package/dist/capsule.d.ts.map +1 -1
- package/dist/capsule.js +38 -15
- package/dist/capsule.js.map +1 -1
- package/dist/contract.d.ts +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/contract.js.map +1 -1
- package/dist/enableGeometryPoolGuards.d.ts +4 -0
- package/dist/enableGeometryPoolGuards.d.ts.map +1 -0
- package/dist/enableGeometryPoolGuards.js +32 -0
- package/dist/enableGeometryPoolGuards.js.map +1 -0
- package/dist/frustum.d.ts +2 -1
- package/dist/frustum.d.ts.map +1 -1
- package/dist/frustum.js +4 -1
- package/dist/frustum.js.map +1 -1
- package/dist/geometryPoolGuards.d.ts +6 -0
- package/dist/geometryPoolGuards.d.ts.map +1 -0
- package/dist/geometryPoolGuards.js +7 -0
- package/dist/geometryPoolGuards.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/matrix.d.ts +12 -9
- package/dist/matrix.d.ts.map +1 -1
- package/dist/matrix.js +103 -106
- package/dist/matrix.js.map +1 -1
- package/dist/matrix3.d.ts +17 -2
- package/dist/matrix3.d.ts.map +1 -1
- package/dist/matrix3.js +88 -44
- package/dist/matrix3.js.map +1 -1
- package/dist/matrix3Pool.d.ts.map +1 -1
- package/dist/matrix3Pool.js +6 -0
- package/dist/matrix3Pool.js.map +1 -1
- package/dist/matrix4.d.ts +23 -10
- package/dist/matrix4.d.ts.map +1 -1
- package/dist/matrix4.js +74 -53
- package/dist/matrix4.js.map +1 -1
- package/dist/matrix4Pool.d.ts.map +1 -1
- package/dist/matrix4Pool.js +6 -0
- package/dist/matrix4Pool.js.map +1 -1
- package/dist/matrixPool.d.ts.map +1 -1
- package/dist/matrixPool.js +6 -0
- package/dist/matrixPool.js.map +1 -1
- package/dist/obb.d.ts +4 -2
- package/dist/obb.d.ts.map +1 -1
- package/dist/obb.js +164 -88
- package/dist/obb.js.map +1 -1
- package/dist/quaternion.d.ts +7 -4
- package/dist/quaternion.d.ts.map +1 -1
- package/dist/quaternion.js +40 -25
- package/dist/quaternion.js.map +1 -1
- package/dist/quaternionPool.d.ts.map +1 -1
- package/dist/quaternionPool.js +6 -0
- package/dist/quaternionPool.js.map +1 -1
- package/dist/ray3d.d.ts +5 -4
- package/dist/ray3d.d.ts.map +1 -1
- package/dist/ray3d.js +23 -8
- package/dist/ray3d.js.map +1 -1
- package/dist/rectangle.d.ts.map +1 -1
- package/dist/rectangle.js +66 -43
- package/dist/rectangle.js.map +1 -1
- package/dist/rectanglePool.d.ts.map +1 -1
- package/dist/rectanglePool.js +6 -0
- package/dist/rectanglePool.js.map +1 -1
- package/dist/transform2d.d.ts.map +1 -1
- package/dist/transform2d.js +5 -2
- package/dist/transform2d.js.map +1 -1
- package/dist/typedarray.js +3 -6
- package/dist/typedarray.js.map +1 -1
- package/dist/vector2.d.ts.map +1 -1
- package/dist/vector2.js +44 -26
- package/dist/vector2.js.map +1 -1
- package/dist/vector2Pool.d.ts.map +1 -1
- package/dist/vector2Pool.js +6 -0
- package/dist/vector2Pool.js.map +1 -1
- package/dist/vector3.d.ts +2 -2
- package/dist/vector3.d.ts.map +1 -1
- package/dist/vector3.js +55 -37
- package/dist/vector3.js.map +1 -1
- package/dist/vector3Pool.d.ts.map +1 -1
- package/dist/vector3Pool.js +6 -0
- package/dist/vector3Pool.js.map +1 -1
- package/dist/vector4.d.ts +2 -2
- package/dist/vector4.d.ts.map +1 -1
- package/dist/vector4.js +66 -48
- package/dist/vector4.js.map +1 -1
- package/dist/vector4Pool.d.ts.map +1 -1
- package/dist/vector4Pool.js +6 -0
- package/dist/vector4Pool.js.map +1 -1
- package/package.json +4 -3
- package/src/aabb.test.ts +18 -0
- package/src/boundingSphere.test.ts +39 -0
- package/src/capsule.test.ts +158 -0
- package/src/enableGeometryPoolGuards.test.ts +121 -0
- package/src/frustum.test.ts +38 -0
- package/src/geometryPoolGuards.test.ts +16 -0
- package/src/matrix.test.ts +52 -6
- package/src/matrix3.test.ts +46 -6
- package/src/matrix3Pool.test.ts +11 -0
- package/src/matrix4.test.ts +553 -135
- package/src/matrix4Pool.test.ts +11 -0
- package/src/matrixPool.test.ts +11 -0
- package/src/obb.test.ts +277 -0
- package/src/plane.test.ts +20 -0
- package/src/quaternion.test.ts +222 -4
- package/src/quaternionPool.test.ts +12 -0
- package/src/ray3d.test.ts +204 -0
- package/src/rectangle.test.ts +58 -14
- package/src/rectanglePool.test.ts +11 -0
- package/src/transform2d.test.ts +38 -0
- package/src/vector2.test.ts +170 -0
- package/src/vector2Pool.test.ts +11 -0
- package/src/vector3.test.ts +210 -0
- package/src/vector3Pool.test.ts +11 -0
- package/src/vector4.test.ts +231 -0
- package/src/vector4Pool.test.ts +11 -0
package/dist/obb.js
CHANGED
|
@@ -27,7 +27,9 @@ export function getClosestPointOnObb(out, obb, point) {
|
|
|
27
27
|
const cx = obb.centerX, cy = obb.centerY, cz = obb.centerZ;
|
|
28
28
|
const hx = obb.halfExtentX, hy = obb.halfExtentY, hz = obb.halfExtentZ;
|
|
29
29
|
const px = point.x, py = point.y, pz = point.z;
|
|
30
|
-
const
|
|
30
|
+
const qx = obb.orientationX, qy = obb.orientationY, qz = obb.orientationZ, qw = obb.orientationW;
|
|
31
|
+
const xx = qx * qx, yy = qy * qy, zz = qz * qz, xy = qx * qy, xz = qx * qz, yz = qy * qz, wx = qw * qx, wy = qw * qy, wz = qw * qz;
|
|
32
|
+
const ax0 = 1 - 2 * (yy + zz), ay0 = 2 * (xy + wz), az0 = 2 * (xz - wy), ax1 = 2 * (xy - wz), ay1 = 1 - 2 * (xx + zz), az1 = 2 * (yz + wx), ax2 = 2 * (xz + wy), ay2 = 2 * (yz - wx), az2 = 1 - 2 * (xx + yy);
|
|
31
33
|
const dx = px - cx, dy = py - cy, dz = pz - cz;
|
|
32
34
|
const d0 = Math.min(Math.max(dx * ax0 + dy * ay0 + dz * az0, -hx), hx);
|
|
33
35
|
const d1 = Math.min(Math.max(dx * ax1 + dy * ay1 + dz * az1, -hy), hy);
|
|
@@ -41,50 +43,88 @@ export function getClosestPointOnObb(out, obb, point) {
|
|
|
41
43
|
* space, then applies the slab method against the axis-aligned half-extent box.
|
|
42
44
|
*
|
|
43
45
|
* Returns the entry parameter `t` (>= 0) on hit, or `-1` on miss. A ray starting inside the
|
|
44
|
-
* OBB returns `t = 0`.
|
|
46
|
+
* OBB returns `t = 0`. Direction need not be normalized. A direction of zero length is not a
|
|
47
|
+
* ray and always returns `-1`.
|
|
45
48
|
*/
|
|
46
49
|
export function intersectRay3DObb(ray, obb) {
|
|
47
50
|
const ox = ray.origin.x - obb.centerX, oy = ray.origin.y - obb.centerY, oz = ray.origin.z - obb.centerZ;
|
|
48
51
|
const dx = ray.direction.x, dy = ray.direction.y, dz = ray.direction.z;
|
|
52
|
+
if (dx * dx + dy * dy + dz * dz === 0)
|
|
53
|
+
return -1; // zero-length direction
|
|
49
54
|
const hx = obb.halfExtentX, hy = obb.halfExtentY, hz = obb.halfExtentZ;
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const
|
|
55
|
+
const qx = obb.orientationX, qy = obb.orientationY, qz = obb.orientationZ, qw = obb.orientationW;
|
|
56
|
+
const xx = qx * qx, yy = qy * qy, zz = qz * qz, xy = qx * qy, xz = qx * qz, yz = qy * qz, wx = qw * qx, wy = qw * qy, wz = qw * qz;
|
|
57
|
+
const ax0 = 1 - 2 * (yy + zz), ay0 = 2 * (xy + wz), az0 = 2 * (xz - wy), ax1 = 2 * (xy - wz), ay1 = 1 - 2 * (xx + zz), az1 = 2 * (yz + wx), ax2 = 2 * (xz + wy), ay2 = 2 * (yz - wx), az2 = 1 - 2 * (xx + yy);
|
|
58
|
+
const origin0 = ox * ax0 + oy * ay0 + oz * az0, origin1 = ox * ax1 + oy * ay1 + oz * az1, origin2 = ox * ax2 + oy * ay2 + oz * az2;
|
|
59
|
+
const direction0 = dx * ax0 + dy * ay0 + dz * az0, direction1 = dx * ax1 + dy * ay1 + dz * az1, direction2 = dx * ax2 + dy * ay2 + dz * az2;
|
|
54
60
|
let tMin = 0;
|
|
55
61
|
let tMax = Number.POSITIVE_INFINITY;
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (t1 > t2) {
|
|
65
|
-
const tmp = t1;
|
|
66
|
-
t1 = t2;
|
|
67
|
-
t2 = tmp;
|
|
68
|
-
}
|
|
69
|
-
tMin = Math.max(tMin, t1);
|
|
70
|
-
tMax = Math.min(tMax, t2);
|
|
71
|
-
if (tMin > tMax)
|
|
72
|
-
return -1;
|
|
62
|
+
if (direction0 !== 0) {
|
|
63
|
+
const invD = 1 / direction0;
|
|
64
|
+
let t1 = (-hx - origin0) * invD;
|
|
65
|
+
let t2 = (hx - origin0) * invD;
|
|
66
|
+
if (t1 > t2) {
|
|
67
|
+
const swap = t1;
|
|
68
|
+
t1 = t2;
|
|
69
|
+
t2 = swap;
|
|
73
70
|
}
|
|
74
|
-
|
|
71
|
+
tMin = Math.max(tMin, t1);
|
|
72
|
+
tMax = Math.min(tMax, t2);
|
|
73
|
+
if (tMin > tMax)
|
|
75
74
|
return -1;
|
|
75
|
+
}
|
|
76
|
+
else if (origin0 < -hx || origin0 > hx) {
|
|
77
|
+
return -1;
|
|
78
|
+
}
|
|
79
|
+
if (direction1 !== 0) {
|
|
80
|
+
const invD = 1 / direction1;
|
|
81
|
+
let t1 = (-hy - origin1) * invD;
|
|
82
|
+
let t2 = (hy - origin1) * invD;
|
|
83
|
+
if (t1 > t2) {
|
|
84
|
+
const swap = t1;
|
|
85
|
+
t1 = t2;
|
|
86
|
+
t2 = swap;
|
|
76
87
|
}
|
|
88
|
+
tMin = Math.max(tMin, t1);
|
|
89
|
+
tMax = Math.min(tMax, t2);
|
|
90
|
+
if (tMin > tMax)
|
|
91
|
+
return -1;
|
|
92
|
+
}
|
|
93
|
+
else if (origin1 < -hy || origin1 > hy) {
|
|
94
|
+
return -1;
|
|
95
|
+
}
|
|
96
|
+
if (direction2 !== 0) {
|
|
97
|
+
const invD = 1 / direction2;
|
|
98
|
+
let t1 = (-hz - origin2) * invD;
|
|
99
|
+
let t2 = (hz - origin2) * invD;
|
|
100
|
+
if (t1 > t2) {
|
|
101
|
+
const swap = t1;
|
|
102
|
+
t1 = t2;
|
|
103
|
+
t2 = swap;
|
|
104
|
+
}
|
|
105
|
+
tMin = Math.max(tMin, t1);
|
|
106
|
+
tMax = Math.min(tMax, t2);
|
|
107
|
+
if (tMin > tMax)
|
|
108
|
+
return -1;
|
|
109
|
+
}
|
|
110
|
+
else if (origin2 < -hz || origin2 > hz) {
|
|
111
|
+
return -1;
|
|
77
112
|
}
|
|
78
113
|
return tMin;
|
|
79
114
|
}
|
|
80
115
|
/**
|
|
81
116
|
* Returns whether an oriented bounding box overlaps an axis-aligned bounding box using the
|
|
82
|
-
* Separating Axis Theorem with 15 candidate axes.
|
|
117
|
+
* Separating Axis Theorem with 15 candidate axes. An empty AABB (min > max on any axis) does
|
|
118
|
+
* not intersect the OBB.
|
|
83
119
|
*/
|
|
84
120
|
export function isObbIntersectingAabb(obb, aabb) {
|
|
121
|
+
if (aabb.min.x > aabb.max.x || aabb.min.y > aabb.max.y || aabb.min.z > aabb.max.z)
|
|
122
|
+
return false;
|
|
85
123
|
const acx = (aabb.min.x + aabb.max.x) * 0.5, acy = (aabb.min.y + aabb.max.y) * 0.5, acz = (aabb.min.z + aabb.max.z) * 0.5;
|
|
86
124
|
const ahx = (aabb.max.x - aabb.min.x) * 0.5, ahy = (aabb.max.y - aabb.min.y) * 0.5, ahz = (aabb.max.z - aabb.min.z) * 0.5;
|
|
87
|
-
const
|
|
125
|
+
const qx = obb.orientationX, qy = obb.orientationY, qz = obb.orientationZ, qw = obb.orientationW;
|
|
126
|
+
const xx = qx * qx, yy = qy * qy, zz = qz * qz, xy = qx * qy, xz = qx * qz, yz = qy * qz, wx = qw * qx, wy = qw * qy, wz = qw * qz;
|
|
127
|
+
const ax0 = 1 - 2 * (yy + zz), ay0 = 2 * (xy + wz), az0 = 2 * (xz - wy), ax1 = 2 * (xy - wz), ay1 = 1 - 2 * (xx + zz), az1 = 2 * (yz + wx), ax2 = 2 * (xz + wy), ay2 = 2 * (yz - wx), az2 = 1 - 2 * (xx + yy);
|
|
88
128
|
const tx = acx - obb.centerX, ty = acy - obb.centerY, tz = acz - obb.centerZ;
|
|
89
129
|
return !obbSatSeparated(tx, ty, tz, ax0, ay0, az0, ax1, ay1, az1, ax2, ay2, az2, obb.halfExtentX, obb.halfExtentY, obb.halfExtentZ, 1, 0, 0, 0, 1, 0, 0, 0, 1, ahx, ahy, ahz);
|
|
90
130
|
}
|
|
@@ -93,8 +133,12 @@ export function isObbIntersectingAabb(obb, aabb) {
|
|
|
93
133
|
* 15 candidate axes (3 face normals per box plus 9 edge cross-products).
|
|
94
134
|
*/
|
|
95
135
|
export function isObbIntersectingObb(a, b) {
|
|
96
|
-
const
|
|
97
|
-
const
|
|
136
|
+
const aqx = a.orientationX, aqy = a.orientationY, aqz = a.orientationZ, aqw = a.orientationW;
|
|
137
|
+
const axx = aqx * aqx, ayy = aqy * aqy, azz = aqz * aqz, axy = aqx * aqy, axz = aqx * aqz, ayz = aqy * aqz, awx = aqw * aqx, awy = aqw * aqy, awz = aqw * aqz;
|
|
138
|
+
const ax0 = 1 - 2 * (ayy + azz), ay0 = 2 * (axy + awz), az0 = 2 * (axz - awy), ax1 = 2 * (axy - awz), ay1 = 1 - 2 * (axx + azz), az1 = 2 * (ayz + awx), ax2 = 2 * (axz + awy), ay2 = 2 * (ayz - awx), az2 = 1 - 2 * (axx + ayy);
|
|
139
|
+
const bqx = b.orientationX, bqy = b.orientationY, bqz = b.orientationZ, bqw = b.orientationW;
|
|
140
|
+
const bxx = bqx * bqx, byy = bqy * bqy, bzz = bqz * bqz, bxy = bqx * bqy, bxz = bqx * bqz, byz = bqy * bqz, bwx = bqw * bqx, bwy = bqw * bqy, bwz = bqw * bqz;
|
|
141
|
+
const bx0 = 1 - 2 * (byy + bzz), by0 = 2 * (bxy + bwz), bz0 = 2 * (bxz - bwy), bx1 = 2 * (bxy - bwz), by1 = 1 - 2 * (bxx + bzz), bz1 = 2 * (byz + bwx), bx2 = 2 * (bxz + bwy), by2 = 2 * (byz - bwx), bz2 = 1 - 2 * (bxx + byy);
|
|
98
142
|
const tx = b.centerX - a.centerX, ty = b.centerY - a.centerY, tz = b.centerZ - a.centerZ;
|
|
99
143
|
return !obbSatSeparated(tx, ty, tz, ax0, ay0, az0, ax1, ay1, az1, ax2, ay2, az2, a.halfExtentX, a.halfExtentY, a.halfExtentZ, bx0, by0, bz0, bx1, by1, bz1, bx2, by2, bz2, b.halfExtentX, b.halfExtentY, b.halfExtentZ);
|
|
100
144
|
}
|
|
@@ -135,33 +179,35 @@ export function transformObbByMatrix4(out, obb, m) {
|
|
|
135
179
|
const r00 = sx > 0 ? _m[0] / sx : 1, r10 = sx > 0 ? _m[1] / sx : 0, r20 = sx > 0 ? _m[2] / sx : 0;
|
|
136
180
|
const r01 = sy > 0 ? _m[4] / sy : 0, r11 = sy > 0 ? _m[5] / sy : 1, r21 = sy > 0 ? _m[6] / sy : 0;
|
|
137
181
|
const r02 = sz > 0 ? _m[8] / sz : 0, r12 = sz > 0 ? _m[9] / sz : 0, r22 = sz > 0 ? _m[10] / sz : 1;
|
|
138
|
-
// Quaternion from rotation matrix (Shepperd method).
|
|
182
|
+
// Quaternion from rotation matrix (Shepperd method). The antisymmetric pairs follow the same
|
|
183
|
+
// handedness as the local-axis rotation map, whose inverse uses x = (r21 - r12), not (r12 - r21).
|
|
184
|
+
// Flipping either one silently yields the conjugate — a rotation by -angle about the same axis.
|
|
139
185
|
let mqw, mqx, mqy, mqz;
|
|
140
186
|
const trace = r00 + r11 + r22;
|
|
141
187
|
if (trace > 0) {
|
|
142
188
|
const s = 0.5 / Math.sqrt(trace + 1);
|
|
143
189
|
mqw = 0.25 / s;
|
|
144
|
-
mqx = (
|
|
145
|
-
mqy = (
|
|
146
|
-
mqz = (
|
|
190
|
+
mqx = (r21 - r12) * s;
|
|
191
|
+
mqy = (r02 - r20) * s;
|
|
192
|
+
mqz = (r10 - r01) * s;
|
|
147
193
|
}
|
|
148
194
|
else if (r00 > r11 && r00 > r22) {
|
|
149
195
|
const s = 2 * Math.sqrt(1 + r00 - r11 - r22);
|
|
150
|
-
mqw = (
|
|
196
|
+
mqw = (r21 - r12) / s;
|
|
151
197
|
mqx = 0.25 * s;
|
|
152
198
|
mqy = (r10 + r01) / s;
|
|
153
199
|
mqz = (r20 + r02) / s;
|
|
154
200
|
}
|
|
155
201
|
else if (r11 > r22) {
|
|
156
202
|
const s = 2 * Math.sqrt(1 + r11 - r00 - r22);
|
|
157
|
-
mqw = (
|
|
203
|
+
mqw = (r02 - r20) / s;
|
|
158
204
|
mqx = (r10 + r01) / s;
|
|
159
205
|
mqy = 0.25 * s;
|
|
160
206
|
mqz = (r21 + r12) / s;
|
|
161
207
|
}
|
|
162
208
|
else {
|
|
163
209
|
const s = 2 * Math.sqrt(1 + r22 - r00 - r11);
|
|
164
|
-
mqw = (
|
|
210
|
+
mqw = (r10 - r01) / s;
|
|
165
211
|
mqx = (r20 + r02) / s;
|
|
166
212
|
mqy = (r21 + r12) / s;
|
|
167
213
|
mqz = 0.25 * s;
|
|
@@ -178,32 +224,91 @@ export function transformObbByMatrix4(out, obb, m) {
|
|
|
178
224
|
out.orientationZ = mqw * oqz + mqx * oqy - mqy * oqx + mqz * oqw;
|
|
179
225
|
out.orientationW = mqw * oqw - mqx * oqx - mqy * oqy - mqz * oqz;
|
|
180
226
|
}
|
|
181
|
-
// Returns [axisX.x, axisX.y, axisX.z, axisY.x, axisY.y, axisY.z, axisZ.x, axisZ.y, axisZ.z]
|
|
182
|
-
// where each triple is an OBB local axis expressed in world space (column of the rotation matrix).
|
|
183
|
-
function obbLocalAxes(obb) {
|
|
184
|
-
const qx = obb.orientationX, qy = obb.orientationY, qz = obb.orientationZ, qw = obb.orientationW;
|
|
185
|
-
const xx = qx * qx, yy = qy * qy, zz = qz * qz;
|
|
186
|
-
const xy = qx * qy, xz = qx * qz, yz = qy * qz;
|
|
187
|
-
const wx = qw * qx, wy = qw * qy, wz = qw * qz;
|
|
188
|
-
return [
|
|
189
|
-
1 - 2 * (yy + zz),
|
|
190
|
-
2 * (xy + wz),
|
|
191
|
-
2 * (xz - wy),
|
|
192
|
-
2 * (xy - wz),
|
|
193
|
-
1 - 2 * (xx + zz),
|
|
194
|
-
2 * (yz + wx),
|
|
195
|
-
2 * (xz + wy),
|
|
196
|
-
2 * (yz - wx),
|
|
197
|
-
1 - 2 * (xx + yy),
|
|
198
|
-
];
|
|
199
|
-
}
|
|
200
227
|
// Returns true if the two OBBs (given by their center offset, local axes, and half-extents) are
|
|
201
228
|
// separated on any of the 15 SAT candidate axes. True = separated = no intersection.
|
|
202
229
|
function obbSatSeparated(tx, ty, tz, ax0, ay0, az0, ax1, ay1, az1, ax2, ay2, az2, hax, hay, haz, bx0, by0, bz0, bx1, by1, bz1, bx2, by2, bz2, hbx, hby, hbz) {
|
|
203
|
-
|
|
230
|
+
for (let axis = 0; axis < 15; axis++) {
|
|
231
|
+
let lx, ly, lz;
|
|
232
|
+
switch (axis) {
|
|
233
|
+
case 0:
|
|
234
|
+
lx = ax0;
|
|
235
|
+
ly = ay0;
|
|
236
|
+
lz = az0;
|
|
237
|
+
break;
|
|
238
|
+
case 1:
|
|
239
|
+
lx = ax1;
|
|
240
|
+
ly = ay1;
|
|
241
|
+
lz = az1;
|
|
242
|
+
break;
|
|
243
|
+
case 2:
|
|
244
|
+
lx = ax2;
|
|
245
|
+
ly = ay2;
|
|
246
|
+
lz = az2;
|
|
247
|
+
break;
|
|
248
|
+
case 3:
|
|
249
|
+
lx = bx0;
|
|
250
|
+
ly = by0;
|
|
251
|
+
lz = bz0;
|
|
252
|
+
break;
|
|
253
|
+
case 4:
|
|
254
|
+
lx = bx1;
|
|
255
|
+
ly = by1;
|
|
256
|
+
lz = bz1;
|
|
257
|
+
break;
|
|
258
|
+
case 5:
|
|
259
|
+
lx = bx2;
|
|
260
|
+
ly = by2;
|
|
261
|
+
lz = bz2;
|
|
262
|
+
break;
|
|
263
|
+
case 6:
|
|
264
|
+
lx = ay0 * bz0 - az0 * by0;
|
|
265
|
+
ly = az0 * bx0 - ax0 * bz0;
|
|
266
|
+
lz = ax0 * by0 - ay0 * bx0;
|
|
267
|
+
break;
|
|
268
|
+
case 7:
|
|
269
|
+
lx = ay0 * bz1 - az0 * by1;
|
|
270
|
+
ly = az0 * bx1 - ax0 * bz1;
|
|
271
|
+
lz = ax0 * by1 - ay0 * bx1;
|
|
272
|
+
break;
|
|
273
|
+
case 8:
|
|
274
|
+
lx = ay0 * bz2 - az0 * by2;
|
|
275
|
+
ly = az0 * bx2 - ax0 * bz2;
|
|
276
|
+
lz = ax0 * by2 - ay0 * bx2;
|
|
277
|
+
break;
|
|
278
|
+
case 9:
|
|
279
|
+
lx = ay1 * bz0 - az1 * by0;
|
|
280
|
+
ly = az1 * bx0 - ax1 * bz0;
|
|
281
|
+
lz = ax1 * by0 - ay1 * bx0;
|
|
282
|
+
break;
|
|
283
|
+
case 10:
|
|
284
|
+
lx = ay1 * bz1 - az1 * by1;
|
|
285
|
+
ly = az1 * bx1 - ax1 * bz1;
|
|
286
|
+
lz = ax1 * by1 - ay1 * bx1;
|
|
287
|
+
break;
|
|
288
|
+
case 11:
|
|
289
|
+
lx = ay1 * bz2 - az1 * by2;
|
|
290
|
+
ly = az1 * bx2 - ax1 * bz2;
|
|
291
|
+
lz = ax1 * by2 - ay1 * bx2;
|
|
292
|
+
break;
|
|
293
|
+
case 12:
|
|
294
|
+
lx = ay2 * bz0 - az2 * by0;
|
|
295
|
+
ly = az2 * bx0 - ax2 * bz0;
|
|
296
|
+
lz = ax2 * by0 - ay2 * bx0;
|
|
297
|
+
break;
|
|
298
|
+
case 13:
|
|
299
|
+
lx = ay2 * bz1 - az2 * by1;
|
|
300
|
+
ly = az2 * bx1 - ax2 * bz1;
|
|
301
|
+
lz = ax2 * by1 - ay2 * bx1;
|
|
302
|
+
break;
|
|
303
|
+
default:
|
|
304
|
+
lx = ay2 * bz2 - az2 * by2;
|
|
305
|
+
ly = az2 * bx2 - ax2 * bz2;
|
|
306
|
+
lz = ax2 * by2 - ay2 * bx2;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
204
309
|
const lenSq = lx * lx + ly * ly + lz * lz;
|
|
205
310
|
if (lenSq < 1e-10)
|
|
206
|
-
|
|
311
|
+
continue;
|
|
207
312
|
const d = Math.abs(tx * lx + ty * ly + tz * lz);
|
|
208
313
|
const pA = Math.abs(ax0 * lx + ay0 * ly + az0 * lz) * hax +
|
|
209
314
|
Math.abs(ax1 * lx + ay1 * ly + az1 * lz) * hay +
|
|
@@ -211,38 +316,9 @@ function obbSatSeparated(tx, ty, tz, ax0, ay0, az0, ax1, ay1, az1, ax2, ay2, az2
|
|
|
211
316
|
const pB = Math.abs(bx0 * lx + by0 * ly + bz0 * lz) * hbx +
|
|
212
317
|
Math.abs(bx1 * lx + by1 * ly + bz1 * lz) * hby +
|
|
213
318
|
Math.abs(bx2 * lx + by2 * ly + bz2 * lz) * hbz;
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return true;
|
|
218
|
-
if (onAxis(ax1, ay1, az1))
|
|
219
|
-
return true;
|
|
220
|
-
if (onAxis(ax2, ay2, az2))
|
|
221
|
-
return true;
|
|
222
|
-
if (onAxis(bx0, by0, bz0))
|
|
223
|
-
return true;
|
|
224
|
-
if (onAxis(bx1, by1, bz1))
|
|
225
|
-
return true;
|
|
226
|
-
if (onAxis(bx2, by2, bz2))
|
|
227
|
-
return true;
|
|
228
|
-
if (onAxis(ay0 * bz0 - az0 * by0, az0 * bx0 - ax0 * bz0, ax0 * by0 - ay0 * bx0))
|
|
229
|
-
return true;
|
|
230
|
-
if (onAxis(ay0 * bz1 - az0 * by1, az0 * bx1 - ax0 * bz1, ax0 * by1 - ay0 * bx1))
|
|
231
|
-
return true;
|
|
232
|
-
if (onAxis(ay0 * bz2 - az0 * by2, az0 * bx2 - ax0 * bz2, ax0 * by2 - ay0 * bx2))
|
|
233
|
-
return true;
|
|
234
|
-
if (onAxis(ay1 * bz0 - az1 * by0, az1 * bx0 - ax1 * bz0, ax1 * by0 - ay1 * bx0))
|
|
235
|
-
return true;
|
|
236
|
-
if (onAxis(ay1 * bz1 - az1 * by1, az1 * bx1 - ax1 * bz1, ax1 * by1 - ay1 * bx1))
|
|
237
|
-
return true;
|
|
238
|
-
if (onAxis(ay1 * bz2 - az1 * by2, az1 * bx2 - ax1 * bz2, ax1 * by2 - ay1 * bx2))
|
|
239
|
-
return true;
|
|
240
|
-
if (onAxis(ay2 * bz0 - az2 * by0, az2 * bx0 - ax2 * bz0, ax2 * by0 - ay2 * bx0))
|
|
241
|
-
return true;
|
|
242
|
-
if (onAxis(ay2 * bz1 - az2 * by1, az2 * bx1 - ax2 * bz1, ax2 * by1 - ay2 * bx1))
|
|
243
|
-
return true;
|
|
244
|
-
if (onAxis(ay2 * bz2 - az2 * by2, az2 * bx2 - ax2 * bz2, ax2 * by2 - ay2 * bx2))
|
|
245
|
-
return true;
|
|
319
|
+
if (d > pA + pB)
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
246
322
|
return false;
|
|
247
323
|
}
|
|
248
324
|
//# sourceMappingURL=obb.js.map
|
package/dist/obb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obb.js","sourceRoot":"","sources":["../src/obb.ts"],"names":[],"mappings":"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E,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"obb.js","sourceRoot":"","sources":["../src/obb.ts"],"names":[],"mappings":"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YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,GAAG,CAAC;gBACT,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,EAAE;gBACL,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,EAAE;gBACL,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,EAAE;gBACL,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR,KAAK,EAAE;gBACL,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;YACR;gBACE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAC3B,MAAM;QACV,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,KAAK;YAAE,SAAS;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,GACN,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QACjD,MAAM,EAAE,GACN,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QACjD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/quaternion.d.ts
CHANGED
|
@@ -70,13 +70,16 @@ export declare function normalizeQuaternion(out: QuaternionLike, source: Readonl
|
|
|
70
70
|
* Safe when `out` aliases `vector` (all inputs are read into locals first).
|
|
71
71
|
*/
|
|
72
72
|
export declare function rotateVector3ByQuaternion(out: Vector3Like, vector: Readonly<Vector3Like>, q: Readonly<QuaternionLike>): void;
|
|
73
|
+
/**
|
|
74
|
+
* Sets the quaternion components directly without normalization.
|
|
75
|
+
*/
|
|
76
|
+
export declare function setQuaternion(out: QuaternionLike, x: number, y: number, z: number, w: number): void;
|
|
73
77
|
/**
|
|
74
78
|
* Builds a quaternion from a rotation `axis` (assumed unit length) and an `angle` in
|
|
75
79
|
* radians. The rotation is right-handed (CCW when looking down the axis toward the origin).
|
|
76
80
|
*
|
|
77
81
|
* Safe when `out` aliases `axis`.
|
|
78
82
|
*/
|
|
79
|
-
export declare function setQuaternion(out: QuaternionLike, x: number, y: number, z: number, w: number): void;
|
|
80
83
|
export declare function setQuaternionFromAxisAngle(out: QuaternionLike, axis: Readonly<Vector3Like>, angle: number): void;
|
|
81
84
|
/**
|
|
82
85
|
* Builds a quaternion from Euler angles (in radians) applied in the given `order`.
|
|
@@ -112,10 +115,10 @@ export declare function setQuaternionIdentity(out: QuaternionLike): void;
|
|
|
112
115
|
* Internally computes `right = up × forward`, `correctedUp = forward × right`, and builds the
|
|
113
116
|
* rotation matrix from `[right, correctedUp, forward]` as column vectors.
|
|
114
117
|
*
|
|
115
|
-
* If `
|
|
116
|
-
*
|
|
118
|
+
* If `up` is parallel to `forward`, an arbitrary perpendicular up direction is chosen so the
|
|
119
|
+
* requested forward direction is preserved. A zero-length `forward` writes the identity.
|
|
117
120
|
*
|
|
118
|
-
* Safe when `out`
|
|
121
|
+
* Safe when `out` aliases `forward` or `up`.
|
|
119
122
|
*/
|
|
120
123
|
export declare function setQuaternionLookRotation(out: QuaternionLike, forward: Readonly<Vector3Like>, up: Readonly<Vector3Like>): void;
|
|
121
124
|
/**
|
package/dist/quaternion.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quaternion.d.ts","sourceRoot":"","sources":["../src/quaternion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAE5E;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAK/F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAE3F;AAED,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,GAC7C,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAG1G;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,KAAK,GAAE,UAAkB,GACxB,IAAI,CAiGN;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAkB7F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC1B,IAAI,CAcN;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAqBjG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC1B,IAAI,CAmBN;AAED
|
|
1
|
+
{"version":3,"file":"quaternion.d.ts","sourceRoot":"","sources":["../src/quaternion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAE5E;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAK/F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAE3F;AAED,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,GAC7C,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAG1G;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,KAAK,GAAE,UAAkB,GACxB,IAAI,CAiGN;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAkB7F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC1B,IAAI,CAcN;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAqBjG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC1B,IAAI,CAmBN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAKnG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOhH;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,GAAE,UAAkB,GACxB,IAAI,CA8CN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAwCjG;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC3B,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,GACxB,IAAI,CAwDN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAK/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,GACxB,IAAI,CAgFN;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC3B,CAAC,EAAE,MAAM,GACR,IAAI,CAuCN"}
|
package/dist/quaternion.js
CHANGED
|
@@ -233,19 +233,20 @@ export function rotateVector3ByQuaternion(out, vector, q) {
|
|
|
233
233
|
out.z = vz + qw * tz + (qx * ty - qy * tx);
|
|
234
234
|
}
|
|
235
235
|
/**
|
|
236
|
-
*
|
|
237
|
-
* radians. The rotation is right-handed (CCW when looking down the axis toward the origin).
|
|
238
|
-
*
|
|
239
|
-
* Safe when `out` aliases `axis`.
|
|
236
|
+
* Sets the quaternion components directly without normalization.
|
|
240
237
|
*/
|
|
241
|
-
// Sets the quaternion components directly. The reference-completeness counterpart to `setVector3` — no
|
|
242
|
-
// normalization; the caller supplies a unit quaternion (or normalizes after).
|
|
243
238
|
export function setQuaternion(out, x, y, z, w) {
|
|
244
239
|
out.x = x;
|
|
245
240
|
out.y = y;
|
|
246
241
|
out.z = z;
|
|
247
242
|
out.w = w;
|
|
248
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Builds a quaternion from a rotation `axis` (assumed unit length) and an `angle` in
|
|
246
|
+
* radians. The rotation is right-handed (CCW when looking down the axis toward the origin).
|
|
247
|
+
*
|
|
248
|
+
* Safe when `out` aliases `axis`.
|
|
249
|
+
*/
|
|
249
250
|
export function setQuaternionFromAxisAngle(out, axis, angle) {
|
|
250
251
|
const half = angle * 0.5;
|
|
251
252
|
const s = Math.sin(half);
|
|
@@ -389,16 +390,14 @@ export function setQuaternionFromUnitVectors(out, from, to) {
|
|
|
389
390
|
out.x = cx;
|
|
390
391
|
out.y = cy;
|
|
391
392
|
out.z = cz;
|
|
393
|
+
// The antiparallel guard above bounds dot below at -0.999999, so w is at least 1e-6 and the
|
|
394
|
+
// length can never be zero here.
|
|
392
395
|
out.w = 1 + dot;
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
out.y *= inv;
|
|
399
|
-
out.z *= inv;
|
|
400
|
-
out.w *= inv;
|
|
401
|
-
}
|
|
396
|
+
const inv = 1 / Math.sqrt(out.x * out.x + out.y * out.y + out.z * out.z + out.w * out.w);
|
|
397
|
+
out.x *= inv;
|
|
398
|
+
out.y *= inv;
|
|
399
|
+
out.z *= inv;
|
|
400
|
+
out.w *= inv;
|
|
402
401
|
}
|
|
403
402
|
/**
|
|
404
403
|
* Resets a quaternion to the identity rotation (0, 0, 0, 1).
|
|
@@ -417,22 +416,37 @@ export function setQuaternionIdentity(out) {
|
|
|
417
416
|
* Internally computes `right = up × forward`, `correctedUp = forward × right`, and builds the
|
|
418
417
|
* rotation matrix from `[right, correctedUp, forward]` as column vectors.
|
|
419
418
|
*
|
|
420
|
-
* If `
|
|
421
|
-
*
|
|
419
|
+
* If `up` is parallel to `forward`, an arbitrary perpendicular up direction is chosen so the
|
|
420
|
+
* requested forward direction is preserved. A zero-length `forward` writes the identity.
|
|
422
421
|
*
|
|
423
|
-
* Safe when `out`
|
|
422
|
+
* Safe when `out` aliases `forward` or `up`.
|
|
424
423
|
*/
|
|
425
424
|
export function setQuaternionLookRotation(out, forward, up) {
|
|
426
425
|
const fx = forward.x, fy = forward.y, fz = forward.z;
|
|
427
426
|
const ux = up.x, uy = up.y, uz = up.z;
|
|
427
|
+
if (fx === 0 && fy === 0 && fz === 0) {
|
|
428
|
+
setQuaternionIdentity(out);
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
428
431
|
// right = up × forward
|
|
429
432
|
let rx = uy * fz - uz * fy;
|
|
430
433
|
let ry = uz * fx - ux * fz;
|
|
431
434
|
let rz = ux * fy - uy * fx;
|
|
432
|
-
|
|
435
|
+
let rLen = Math.sqrt(rx * rx + ry * ry + rz * rz);
|
|
433
436
|
if (rLen === 0) {
|
|
434
|
-
|
|
435
|
-
|
|
437
|
+
// Roll is underdetermined when up is parallel to forward. Choose the world axis least aligned
|
|
438
|
+
// with forward, matching the fallback principle used by setMatrix4LookAt.
|
|
439
|
+
if (Math.abs(fz) < 0.9) {
|
|
440
|
+
rx = -fy;
|
|
441
|
+
ry = fx;
|
|
442
|
+
rz = 0;
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
rx = 0;
|
|
446
|
+
ry = -fz;
|
|
447
|
+
rz = fy;
|
|
448
|
+
}
|
|
449
|
+
rLen = Math.sqrt(rx * rx + ry * ry + rz * rz);
|
|
436
450
|
}
|
|
437
451
|
const rInv = 1 / rLen;
|
|
438
452
|
rx *= rInv;
|
|
@@ -442,10 +456,11 @@ export function setQuaternionLookRotation(out, forward, up) {
|
|
|
442
456
|
const cux = fy * rz - fz * ry;
|
|
443
457
|
const cuy = fz * rx - fx * rz;
|
|
444
458
|
const cuz = fx * ry - fy * rx;
|
|
445
|
-
// Rotation matrix columns: col0 = right, col1 = correctedUp, col2 = forward
|
|
446
|
-
|
|
447
|
-
const
|
|
448
|
-
const
|
|
459
|
+
// Rotation matrix columns: col0 = right, col1 = correctedUp, col2 = forward. Match the
|
|
460
|
+
// column-major element naming used by setQuaternionFromMatrix4.
|
|
461
|
+
const m00 = rx, m10 = cux, m20 = fx;
|
|
462
|
+
const m01 = ry, m11 = cuy, m21 = fy;
|
|
463
|
+
const m02 = rz, m12 = cuz, m22 = fz;
|
|
449
464
|
const trace = m00 + m11 + m22;
|
|
450
465
|
if (trace > 0) {
|
|
451
466
|
const s = 0.5 / Math.sqrt(trace + 1);
|