@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.
Files changed (125) hide show
  1. package/dist/aabb.d.ts +1 -0
  2. package/dist/aabb.d.ts.map +1 -1
  3. package/dist/aabb.js +58 -38
  4. package/dist/aabb.js.map +1 -1
  5. package/dist/boundingSphere.d.ts.map +1 -1
  6. package/dist/boundingSphere.js +3 -2
  7. package/dist/boundingSphere.js.map +1 -1
  8. package/dist/capsule.d.ts +6 -5
  9. package/dist/capsule.d.ts.map +1 -1
  10. package/dist/capsule.js +38 -15
  11. package/dist/capsule.js.map +1 -1
  12. package/dist/contract.d.ts +1 -0
  13. package/dist/contract.d.ts.map +1 -1
  14. package/dist/contract.js +1 -0
  15. package/dist/contract.js.map +1 -1
  16. package/dist/enableGeometryPoolGuards.d.ts +4 -0
  17. package/dist/enableGeometryPoolGuards.d.ts.map +1 -0
  18. package/dist/enableGeometryPoolGuards.js +32 -0
  19. package/dist/enableGeometryPoolGuards.js.map +1 -0
  20. package/dist/frustum.d.ts +2 -1
  21. package/dist/frustum.d.ts.map +1 -1
  22. package/dist/frustum.js +4 -1
  23. package/dist/frustum.js.map +1 -1
  24. package/dist/geometryPoolGuards.d.ts +6 -0
  25. package/dist/geometryPoolGuards.d.ts.map +1 -0
  26. package/dist/geometryPoolGuards.js +7 -0
  27. package/dist/geometryPoolGuards.js.map +1 -0
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/matrix.d.ts +12 -9
  33. package/dist/matrix.d.ts.map +1 -1
  34. package/dist/matrix.js +103 -106
  35. package/dist/matrix.js.map +1 -1
  36. package/dist/matrix3.d.ts +17 -2
  37. package/dist/matrix3.d.ts.map +1 -1
  38. package/dist/matrix3.js +88 -44
  39. package/dist/matrix3.js.map +1 -1
  40. package/dist/matrix3Pool.d.ts.map +1 -1
  41. package/dist/matrix3Pool.js +6 -0
  42. package/dist/matrix3Pool.js.map +1 -1
  43. package/dist/matrix4.d.ts +23 -10
  44. package/dist/matrix4.d.ts.map +1 -1
  45. package/dist/matrix4.js +74 -53
  46. package/dist/matrix4.js.map +1 -1
  47. package/dist/matrix4Pool.d.ts.map +1 -1
  48. package/dist/matrix4Pool.js +6 -0
  49. package/dist/matrix4Pool.js.map +1 -1
  50. package/dist/matrixPool.d.ts.map +1 -1
  51. package/dist/matrixPool.js +6 -0
  52. package/dist/matrixPool.js.map +1 -1
  53. package/dist/obb.d.ts +4 -2
  54. package/dist/obb.d.ts.map +1 -1
  55. package/dist/obb.js +164 -88
  56. package/dist/obb.js.map +1 -1
  57. package/dist/quaternion.d.ts +7 -4
  58. package/dist/quaternion.d.ts.map +1 -1
  59. package/dist/quaternion.js +40 -25
  60. package/dist/quaternion.js.map +1 -1
  61. package/dist/quaternionPool.d.ts.map +1 -1
  62. package/dist/quaternionPool.js +6 -0
  63. package/dist/quaternionPool.js.map +1 -1
  64. package/dist/ray3d.d.ts +5 -4
  65. package/dist/ray3d.d.ts.map +1 -1
  66. package/dist/ray3d.js +23 -8
  67. package/dist/ray3d.js.map +1 -1
  68. package/dist/rectangle.d.ts.map +1 -1
  69. package/dist/rectangle.js +66 -43
  70. package/dist/rectangle.js.map +1 -1
  71. package/dist/rectanglePool.d.ts.map +1 -1
  72. package/dist/rectanglePool.js +6 -0
  73. package/dist/rectanglePool.js.map +1 -1
  74. package/dist/transform2d.d.ts.map +1 -1
  75. package/dist/transform2d.js +5 -2
  76. package/dist/transform2d.js.map +1 -1
  77. package/dist/typedarray.js +3 -6
  78. package/dist/typedarray.js.map +1 -1
  79. package/dist/vector2.d.ts.map +1 -1
  80. package/dist/vector2.js +44 -26
  81. package/dist/vector2.js.map +1 -1
  82. package/dist/vector2Pool.d.ts.map +1 -1
  83. package/dist/vector2Pool.js +6 -0
  84. package/dist/vector2Pool.js.map +1 -1
  85. package/dist/vector3.d.ts +2 -2
  86. package/dist/vector3.d.ts.map +1 -1
  87. package/dist/vector3.js +55 -37
  88. package/dist/vector3.js.map +1 -1
  89. package/dist/vector3Pool.d.ts.map +1 -1
  90. package/dist/vector3Pool.js +6 -0
  91. package/dist/vector3Pool.js.map +1 -1
  92. package/dist/vector4.d.ts +2 -2
  93. package/dist/vector4.d.ts.map +1 -1
  94. package/dist/vector4.js +66 -48
  95. package/dist/vector4.js.map +1 -1
  96. package/dist/vector4Pool.d.ts.map +1 -1
  97. package/dist/vector4Pool.js +6 -0
  98. package/dist/vector4Pool.js.map +1 -1
  99. package/package.json +4 -3
  100. package/src/aabb.test.ts +18 -0
  101. package/src/boundingSphere.test.ts +39 -0
  102. package/src/capsule.test.ts +158 -0
  103. package/src/enableGeometryPoolGuards.test.ts +121 -0
  104. package/src/frustum.test.ts +38 -0
  105. package/src/geometryPoolGuards.test.ts +16 -0
  106. package/src/matrix.test.ts +52 -6
  107. package/src/matrix3.test.ts +46 -6
  108. package/src/matrix3Pool.test.ts +11 -0
  109. package/src/matrix4.test.ts +553 -135
  110. package/src/matrix4Pool.test.ts +11 -0
  111. package/src/matrixPool.test.ts +11 -0
  112. package/src/obb.test.ts +277 -0
  113. package/src/plane.test.ts +20 -0
  114. package/src/quaternion.test.ts +222 -4
  115. package/src/quaternionPool.test.ts +12 -0
  116. package/src/ray3d.test.ts +204 -0
  117. package/src/rectangle.test.ts +58 -14
  118. package/src/rectanglePool.test.ts +11 -0
  119. package/src/transform2d.test.ts +38 -0
  120. package/src/vector2.test.ts +170 -0
  121. package/src/vector2Pool.test.ts +11 -0
  122. package/src/vector3.test.ts +210 -0
  123. package/src/vector3Pool.test.ts +11 -0
  124. package/src/vector4.test.ts +231 -0
  125. package/src/vector4Pool.test.ts +11 -0
package/dist/aabb.d.ts CHANGED
@@ -60,6 +60,7 @@ export declare function getClosestPointOnAabb(out: Vector3Like, aabb: Readonly<A
60
60
  export declare function intersectAabb(out: AabbLike, a: Readonly<AabbLike>, b: Readonly<AabbLike>): void;
61
61
  /**
62
62
  * Returns whether two axis-aligned bounding boxes overlap (share any interior or surface point).
63
+ * An empty box (min > max on any axis) does not intersect anything.
63
64
  */
64
65
  export declare function isAabbIntersectingAabb(a: Readonly<AabbLike>, b: Readonly<AabbLike>): boolean;
65
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"aabb.d.ts","sourceRoot":"","sources":["../src/aabb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aabb.d.ts","sourceRoot":"","sources":["../src/aabb.ts"],"names":[],"mappings":"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"}
package/dist/aabb.js CHANGED
@@ -20,12 +20,14 @@ export function containsAabbPoint(aabb, point) {
20
20
  * Safe when `out` aliases `source`.
21
21
  */
22
22
  export function copyAabb(out, source) {
23
- out.min.x = source.min.x;
24
- out.min.y = source.min.y;
25
- out.min.z = source.min.z;
26
- out.max.x = source.max.x;
27
- out.max.y = source.max.y;
28
- out.max.z = source.max.z;
23
+ const minX = source.min.x, minY = source.min.y, minZ = source.min.z;
24
+ const maxX = source.max.x, maxY = source.max.y, maxZ = source.max.z;
25
+ out.min.x = minX;
26
+ out.min.y = minY;
27
+ out.min.z = minZ;
28
+ out.max.x = maxX;
29
+ out.max.y = maxY;
30
+ out.max.z = maxZ;
29
31
  }
30
32
  /**
31
33
  * Creates an axis-aligned bounding box from explicit min/max corner components. With no
@@ -44,13 +46,15 @@ export function createAabb(minX, minY, minZ, maxX, maxY, maxZ) {
44
46
  * Safe when `out` aliases `aabb`.
45
47
  */
46
48
  export function expandAabbByPoint(out, aabb, point) {
49
+ const minX = aabb.min.x, minY = aabb.min.y, minZ = aabb.min.z;
50
+ const maxX = aabb.max.x, maxY = aabb.max.y, maxZ = aabb.max.z;
47
51
  const px = point.x, py = point.y, pz = point.z;
48
- out.min.x = Math.min(aabb.min.x, px);
49
- out.min.y = Math.min(aabb.min.y, py);
50
- out.min.z = Math.min(aabb.min.z, pz);
51
- out.max.x = Math.max(aabb.max.x, px);
52
- out.max.y = Math.max(aabb.max.y, py);
53
- out.max.z = Math.max(aabb.max.z, pz);
52
+ out.min.x = Math.min(minX, px);
53
+ out.min.y = Math.min(minY, py);
54
+ out.min.z = Math.min(minZ, pz);
55
+ out.max.x = Math.max(maxX, px);
56
+ out.max.y = Math.max(maxY, py);
57
+ out.max.z = Math.max(maxZ, pz);
54
58
  }
55
59
  /**
56
60
  * Grows an axis-aligned bounding box to include a bounding sphere. The sphere is expanded to
@@ -59,47 +63,52 @@ export function expandAabbByPoint(out, aabb, point) {
59
63
  * Safe when `out` aliases `aabb`.
60
64
  */
61
65
  export function expandAabbBySphere(out, aabb, sphere) {
62
- if (sphere.radius < 0) {
66
+ const minX = aabb.min.x, minY = aabb.min.y, minZ = aabb.min.z;
67
+ const maxX = aabb.max.x, maxY = aabb.max.y, maxZ = aabb.max.z;
68
+ const cx = sphere.center.x, cy = sphere.center.y, cz = sphere.center.z, radius = sphere.radius;
69
+ if (radius < 0) {
63
70
  // empty sphere — no expansion
64
- out.min.x = aabb.min.x;
65
- out.min.y = aabb.min.y;
66
- out.min.z = aabb.min.z;
67
- out.max.x = aabb.max.x;
68
- out.max.y = aabb.max.y;
69
- out.max.z = aabb.max.z;
71
+ out.min.x = minX;
72
+ out.min.y = minY;
73
+ out.min.z = minZ;
74
+ out.max.x = maxX;
75
+ out.max.y = maxY;
76
+ out.max.z = maxZ;
70
77
  return;
71
78
  }
72
- const cx = sphere.center.x, cy = sphere.center.y, cz = sphere.center.z, r = sphere.radius;
73
- out.min.x = Math.min(aabb.min.x, cx - r);
74
- out.min.y = Math.min(aabb.min.y, cy - r);
75
- out.min.z = Math.min(aabb.min.z, cz - r);
76
- out.max.x = Math.max(aabb.max.x, cx + r);
77
- out.max.y = Math.max(aabb.max.y, cy + r);
78
- out.max.z = Math.max(aabb.max.z, cz + r);
79
+ out.min.x = Math.min(minX, cx - radius);
80
+ out.min.y = Math.min(minY, cy - radius);
81
+ out.min.z = Math.min(minZ, cz - radius);
82
+ out.max.x = Math.max(maxX, cx + radius);
83
+ out.max.y = Math.max(maxY, cy + radius);
84
+ out.max.z = Math.max(maxZ, cz + radius);
79
85
  }
80
86
  /**
81
87
  * Writes the center point of an axis-aligned bounding box (the midpoint of its corners).
82
88
  */
83
89
  export function getAabbCenter(out, aabb) {
84
- out.x = (aabb.min.x + aabb.max.x) * 0.5;
85
- out.y = (aabb.min.y + aabb.max.y) * 0.5;
86
- out.z = (aabb.min.z + aabb.max.z) * 0.5;
90
+ const x = (aabb.min.x + aabb.max.x) * 0.5, y = (aabb.min.y + aabb.max.y) * 0.5, z = (aabb.min.z + aabb.max.z) * 0.5;
91
+ out.x = x;
92
+ out.y = y;
93
+ out.z = z;
87
94
  }
88
95
  /**
89
96
  * Writes the half-extents (half the size along each axis) of an axis-aligned bounding box.
90
97
  */
91
98
  export function getAabbExtents(out, aabb) {
92
- out.x = (aabb.max.x - aabb.min.x) * 0.5;
93
- out.y = (aabb.max.y - aabb.min.y) * 0.5;
94
- out.z = (aabb.max.z - aabb.min.z) * 0.5;
99
+ const x = (aabb.max.x - aabb.min.x) * 0.5, y = (aabb.max.y - aabb.min.y) * 0.5, z = (aabb.max.z - aabb.min.z) * 0.5;
100
+ out.x = x;
101
+ out.y = y;
102
+ out.z = z;
95
103
  }
96
104
  /**
97
105
  * Writes the full size (extent along each axis) of an axis-aligned bounding box.
98
106
  */
99
107
  export function getAabbSize(out, aabb) {
100
- out.x = aabb.max.x - aabb.min.x;
101
- out.y = aabb.max.y - aabb.min.y;
102
- out.z = aabb.max.z - aabb.min.z;
108
+ const x = aabb.max.x - aabb.min.x, y = aabb.max.y - aabb.min.y, z = aabb.max.z - aabb.min.z;
109
+ out.x = x;
110
+ out.y = y;
111
+ out.z = z;
103
112
  }
104
113
  /**
105
114
  * Writes the point on (or inside) an axis-aligned bounding box closest to `point` — each
@@ -111,9 +120,11 @@ export function getAabbSize(out, aabb) {
111
120
  */
112
121
  export function getClosestPointOnAabb(out, aabb, point) {
113
122
  const px = point.x, py = point.y, pz = point.z;
114
- out.x = Math.min(Math.max(px, aabb.min.x), aabb.max.x);
115
- out.y = Math.min(Math.max(py, aabb.min.y), aabb.max.y);
116
- out.z = Math.min(Math.max(pz, aabb.min.z), aabb.max.z);
123
+ const minX = aabb.min.x, minY = aabb.min.y, minZ = aabb.min.z;
124
+ const maxX = aabb.max.x, maxY = aabb.max.y, maxZ = aabb.max.z;
125
+ out.x = Math.min(Math.max(px, minX), maxX);
126
+ out.y = Math.min(Math.max(py, minY), maxY);
127
+ out.z = Math.min(Math.max(pz, minZ), maxZ);
117
128
  }
118
129
  /**
119
130
  * Writes the intersection (overlap region) of two axis-aligned bounding boxes to `out`.
@@ -135,8 +146,17 @@ export function intersectAabb(out, a, b) {
135
146
  }
136
147
  /**
137
148
  * Returns whether two axis-aligned bounding boxes overlap (share any interior or surface point).
149
+ * An empty box (min > max on any axis) does not intersect anything.
138
150
  */
139
151
  export function isAabbIntersectingAabb(a, b) {
152
+ if (a.min.x > a.max.x ||
153
+ a.min.z > a.max.z ||
154
+ a.min.y > a.max.y ||
155
+ b.min.x > b.max.x ||
156
+ b.min.y > b.max.y ||
157
+ b.min.z > b.max.z) {
158
+ return false;
159
+ }
140
160
  return (a.min.x <= b.max.x &&
141
161
  a.max.x >= b.min.x &&
142
162
  a.min.y <= b.max.y &&
package/dist/aabb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"aabb.js","sourceRoot":"","sources":["../src/aabb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aabb.js","sourceRoot":"","sources":["../src/aabb.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"boundingSphere.d.ts","sourceRoot":"","sources":["../src/boundingSphere.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAExF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC3B,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAKtG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,cAAc,CAGhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC3B,IAAI,CAyBN;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACxD,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC9B,OAAO,CAQT;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,EACvB,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC9B,IAAI,CAuDN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,IAAI,CAKN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CA2BjG;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GACvB,IAAI,CAoBN"}
1
+ {"version":3,"file":"boundingSphere.d.ts","sourceRoot":"","sources":["../src/boundingSphere.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAExF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC3B,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAKtG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,cAAc,CAGhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC3B,IAAI,CAyBN;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACxD,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC9B,OAAO,CAQT;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,EACvB,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC9B,IAAI,CAwDN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,IAAI,CAKN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CA2BjG;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GACvB,IAAI,CAoBN"}
@@ -120,10 +120,11 @@ export function mergeBoundingSphere(out, a, b) {
120
120
  out.radius = br;
121
121
  return;
122
122
  }
123
- // General case: new radius = (dist + ar + br) / 2
123
+ // General case: new radius = (dist + ar + br) / 2. Neither containment test fired, so
124
+ // `dist + br > ar` and `dist + ar > br`; adding those gives `dist > 0` and the division is safe.
124
125
  const newRadius = (dist + ar + br) * 0.5;
125
126
  // New center is along the line from a to b, offset by (newRadius - ar)
126
- const t = dist !== 0 ? (newRadius - ar) / dist : 0;
127
+ const t = (newRadius - ar) / dist;
127
128
  out.center.x = acx + dx * t;
128
129
  out.center.y = acy + dy * t;
129
130
  out.center.z = acz + dz * t;
@@ -1 +1 @@
1
- {"version":3,"file":"boundingSphere.js","sourceRoot":"","sources":["../src/boundingSphere.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundingSphere.js","sourceRoot":"","sources":["../src/boundingSphere.ts"],"names":[],"mappings":"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"}
package/dist/capsule.d.ts CHANGED
@@ -5,10 +5,10 @@ import type { BoundingSphereLike, Capsule, CapsuleLike, Ray3DLike, Vector3Like }
5
5
  */
6
6
  export declare function createCapsule(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, radius: number): Capsule;
7
7
  /**
8
- * Writes the point on the capsule surface (or axis) closest to `point`. Projects `point` onto
9
- * the capsule axis segment, clamps the parameter to [0, 1], then offsets by `radius` toward
10
- * `point`. When `point` lies on the axis the stable fallback is the axis point itself offset
11
- * along +X.
8
+ * Writes the point on the capsule surface closest to `point`. Projects `point` onto the capsule
9
+ * axis segment, clamps the parameter to [0, 1], then offsets by `radius` toward `point`. A point
10
+ * on the axis is equidistant from a whole ring of surface points; the stable pick is the axis
11
+ * point offset by `radius` along a direction perpendicular to the axis.
12
12
  *
13
13
  * Safe when `out` aliases `point` (reads all inputs before writing).
14
14
  */
@@ -18,7 +18,8 @@ export declare function getClosestPointOnCapsule(out: Vector3Like, capsule: Read
18
18
  * the capsule axis segment) with hemispherical cap tests at start and end.
19
19
  *
20
20
  * Returns the entry parameter `t` (>= 0) on hit, or `-1` on miss. A ray starting inside the
21
- * capsule returns `t = 0`.
21
+ * capsule returns `t = 0`. Direction need not be normalized. An empty capsule (negative radius)
22
+ * always returns `-1`.
22
23
  */
23
24
  export declare function intersectRay3DCapsule(ray: Readonly<Ray3DLike>, capsule: Readonly<CapsuleLike>): number;
24
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"capsule.d.ts","sourceRoot":"","sources":["../src/capsule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjH;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC3B,IAAI,CA4CN;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAsFtG;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAkBxG;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,OAAO,CAeT;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,IAAI,CAQN"}
1
+ {"version":3,"file":"capsule.d.ts","sourceRoot":"","sources":["../src/capsule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjH;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC3B,IAAI,CAgDN;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAuFtG;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAkBxG;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,OAAO,CAeT;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,IAAI,CAQN"}
package/dist/capsule.js CHANGED
@@ -7,10 +7,10 @@ export function createCapsule(startX, startY, startZ, endX, endY, endZ, radius)
7
7
  return createEntity({ endX, endY, endZ, radius, startX, startY, startZ });
8
8
  }
9
9
  /**
10
- * Writes the point on the capsule surface (or axis) closest to `point`. Projects `point` onto
11
- * the capsule axis segment, clamps the parameter to [0, 1], then offsets by `radius` toward
12
- * `point`. When `point` lies on the axis the stable fallback is the axis point itself offset
13
- * along +X.
10
+ * Writes the point on the capsule surface closest to `point`. Projects `point` onto the capsule
11
+ * axis segment, clamps the parameter to [0, 1], then offsets by `radius` toward `point`. A point
12
+ * on the axis is equidistant from a whole ring of surface points; the stable pick is the axis
13
+ * point offset by `radius` along a direction perpendicular to the axis.
14
14
  *
15
15
  * Safe when `out` aliases `point` (reads all inputs before writing).
16
16
  */
@@ -36,9 +36,13 @@ export function getClosestPointOnCapsule(out, capsule, point) {
36
36
  const dx = px - closestX, dy = py - closestY, dz = pz - closestZ;
37
37
  const dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
38
38
  if (dist < 1e-10) {
39
- out.x = closestX + r;
40
- out.y = closestY;
41
- out.z = closestZ;
39
+ // Offsetting along a fixed world axis would land back on the capsule axis whenever the capsule
40
+ // happens to run along it, which is inside the capsule rather than on its surface. Crossing the
41
+ // axis with whichever world direction is least aligned with it is always perpendicular to it.
42
+ const [perpX, perpY, perpZ] = axisPerpendicular(abx, aby, abz, abLen2);
43
+ out.x = closestX + r * perpX;
44
+ out.y = closestY + r * perpY;
45
+ out.z = closestZ + r * perpZ;
42
46
  }
43
47
  else {
44
48
  const inv = r / dist;
@@ -52,7 +56,8 @@ export function getClosestPointOnCapsule(out, capsule, point) {
52
56
  * the capsule axis segment) with hemispherical cap tests at start and end.
53
57
  *
54
58
  * Returns the entry parameter `t` (>= 0) on hit, or `-1` on miss. A ray starting inside the
55
- * capsule returns `t = 0`.
59
+ * capsule returns `t = 0`. Direction need not be normalized. An empty capsule (negative radius)
60
+ * always returns `-1`.
56
61
  */
57
62
  export function intersectRay3DCapsule(ray, capsule) {
58
63
  const ox = ray.origin.x, oy = ray.origin.y, oz = ray.origin.z;
@@ -60,24 +65,26 @@ export function intersectRay3DCapsule(ray, capsule) {
60
65
  const ax = capsule.startX, ay = capsule.startY, az = capsule.startZ;
61
66
  const bx = capsule.endX, by = capsule.endY, bz = capsule.endZ;
62
67
  const r = capsule.radius;
68
+ if (r < 0)
69
+ return -1;
70
+ const directionLengthSq = dx * dx + dy * dy + dz * dz;
71
+ if (directionLengthSq === 0)
72
+ return -1;
63
73
  const abx = bx - ax, aby = by - ay, abz = bz - az;
64
74
  const abLen2 = abx * abx + aby * aby + abz * abz;
65
75
  // Ray-sphere helper (no allocation): returns t on hit or -1 on miss.
66
76
  const sphereHit = (cx, cy, cz) => {
67
77
  const mx = ox - cx, my = oy - cy, mz = oz - cz;
68
- const lenD2 = dx * dx + dy * dy + dz * dz;
69
- if (lenD2 === 0)
70
- return -1;
71
78
  const b = mx * dx + my * dy + mz * dz;
72
79
  const c = mx * mx + my * my + mz * mz - r * r;
73
- const disc = b * b - lenD2 * c;
80
+ const disc = b * b - directionLengthSq * c;
74
81
  if (disc < 0)
75
82
  return -1;
76
83
  const sqrtD = Math.sqrt(disc);
77
- const t1 = (-b - sqrtD) / lenD2;
84
+ const t1 = (-b - sqrtD) / directionLengthSq;
78
85
  if (t1 >= 0)
79
86
  return t1;
80
- const t2 = (-b + sqrtD) / lenD2;
87
+ const t2 = (-b + sqrtD) / directionLengthSq;
81
88
  return t2 >= 0 ? 0 : -1;
82
89
  };
83
90
  if (abLen2 < 1e-20)
@@ -93,7 +100,7 @@ export function intersectRay3DCapsule(ray, capsule) {
93
100
  const qa = dpx * dpx + dpy * dpy + dpz * dpz;
94
101
  const qb = apx * dpx + apy * dpy + apz * dpz;
95
102
  const qc = apx * apx + apy * apy + apz * apz - r * r;
96
- if (qa > 1e-20) {
103
+ if (Math.sqrt(qa) > 1e-10 * Math.sqrt(directionLengthSq)) {
97
104
  const disc = qb * qb - qa * qc;
98
105
  if (disc >= 0) {
99
106
  const sqrtD = Math.sqrt(disc);
@@ -154,6 +161,22 @@ export function setCapsule(out, startX, startY, startZ, endX, endY, endZ, radius
154
161
  out.endZ = endZ;
155
162
  out.radius = radius;
156
163
  }
164
+ // A unit vector perpendicular to the capsule axis (abx, aby, abz), for the cases where the caller
165
+ // asked about a point on the axis itself and any perpendicular direction is an equally good answer.
166
+ // A capsule with no length is a sphere, whose surface has no preferred direction, so +X serves.
167
+ function axisPerpendicular(abx, aby, abz, abLen2) {
168
+ if (abLen2 < 1e-20)
169
+ return [1, 0, 0];
170
+ const absX = Math.abs(abx), absY = Math.abs(aby), absZ = Math.abs(abz);
171
+ const leastAlignedX = absX <= absY && absX <= absZ ? 1 : 0;
172
+ const leastAlignedY = leastAlignedX === 0 && absY <= absZ ? 1 : 0;
173
+ const leastAlignedZ = leastAlignedX === 0 && leastAlignedY === 0 ? 1 : 0;
174
+ const px = aby * leastAlignedZ - abz * leastAlignedY;
175
+ const py = abz * leastAlignedX - abx * leastAlignedZ;
176
+ const pz = abx * leastAlignedY - aby * leastAlignedX;
177
+ const length = Math.sqrt(px * px + py * py + pz * pz);
178
+ return [px / length, py / length, pz / length];
179
+ }
157
180
  // Squared distance from a point P to the line segment AB.
158
181
  function pointToSegmentDistanceSq(px, py, pz, ax, ay, az, bx, by, bz) {
159
182
  const abx = bx - ax, aby = by - ay, abz = bz - az;
@@ -1 +1 @@
1
- {"version":3,"file":"capsule.js","sourceRoot":"","sources":["../src/capsule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capsule.js","sourceRoot":"","sources":["../src/capsule.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export * from './aabb';
2
2
  export * from './boundingSphere';
3
3
  export * from './capsule';
4
+ export * from './enableGeometryPoolGuards';
4
5
  export * from './frustum';
5
6
  export * from './matrix';
6
7
  export * from './matrix3';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
package/dist/contract.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './aabb';
2
2
  export * from './boundingSphere';
3
3
  export * from './capsule';
4
+ export * from './enableGeometryPoolGuards';
4
5
  export * from './frustum';
5
6
  export * from './matrix';
6
7
  export * from './matrix3';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function areGeometryPoolGuardsEnabled(): boolean;
2
+ export declare function disableGeometryPoolGuards(): void;
3
+ export declare function enableGeometryPoolGuards(): void;
4
+ //# sourceMappingURL=enableGeometryPoolGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableGeometryPoolGuards.d.ts","sourceRoot":"","sources":["../src/enableGeometryPoolGuards.ts"],"names":[],"mappings":"AAOA,wBAAgB,4BAA4B,IAAI,OAAO,CAEtD;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAKD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -0,0 +1,32 @@
1
+ import { logOnce } from '@flighthq/log/contract';
2
+ import { LogLevel } from '@flighthq/types/contract';
3
+ import { geometryPoolReleaseGuard, setGeometryPoolReleaseGuard } from './geometryPoolGuards';
4
+ export function areGeometryPoolGuardsEnabled() {
5
+ return geometryPoolReleaseGuard !== null;
6
+ }
7
+ export function disableGeometryPoolGuards() {
8
+ setGeometryPoolReleaseGuard(null);
9
+ }
10
+ // Installs opt-in diagnostics for unbalanced geometry-pool brackets. The ordinary release path keeps a
11
+ // null callback and performs no membership scan; importing neither this module nor @flighthq/log keeps
12
+ // the warning prose and logging dependency outside production bundles.
13
+ export function enableGeometryPoolGuards() {
14
+ setGeometryPoolReleaseGuard(warnOnDoubleRelease);
15
+ }
16
+ function warnOnDoubleRelease(releaseFunction) {
17
+ const acquireFunctions = acquireFunctionsByReleaseFunction[releaseFunction];
18
+ logOnce(`geometry:double-release:${releaseFunction}`, LogLevel.Warn, {
19
+ message: `${releaseFunction}: this value is already in its pool, so it is being released twice. Two later matching acquire calls will hand back the same object and unrelated owners will alias each other. Every ${acquireFunctions} call pairs with exactly one ${releaseFunction} call, and the value must not be used after release.`,
20
+ }, 'geometry');
21
+ }
22
+ const acquireFunctionsByReleaseFunction = {
23
+ releaseMatrix: 'acquireMatrix or acquireIdentityMatrix',
24
+ releaseMatrix3: 'acquireMatrix3 or acquireIdentityMatrix3',
25
+ releaseMatrix4: 'acquireMatrix4 or acquireIdentityMatrix4',
26
+ releaseQuaternion: 'acquireQuaternion or acquireIdentityQuaternion',
27
+ releaseRectangle: 'acquireRectangle or acquireEmptyRectangle',
28
+ releaseVector2: 'acquireVector2 or acquireEmptyVector2',
29
+ releaseVector3: 'acquireVector3 or acquireEmptyVector3',
30
+ releaseVector4: 'acquireVector4 or acquireEmptyVector4',
31
+ };
32
+ //# sourceMappingURL=enableGeometryPoolGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableGeometryPoolGuards.js","sourceRoot":"","sources":["../src/enableGeometryPoolGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAI7F,MAAM,UAAU,4BAA4B;IAC1C,OAAO,wBAAwB,KAAK,IAAI,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,uGAAuG;AACvG,uGAAuG;AACvG,uEAAuE;AACvE,MAAM,UAAU,wBAAwB;IACtC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,mBAAmB,CAAC,eAA4C;IACvE,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,eAAe,CAAC,CAAC;IAC5E,OAAO,CACL,2BAA2B,eAAe,EAAE,EAC5C,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EAAE,GAAG,eAAe,yLAAyL,gBAAgB,gCAAgC,eAAe,sDAAsD;KAC1U,EACD,UAAU,CACX,CAAC;AACJ,CAAC;AAED,MAAM,iCAAiC,GAA0D;IAC/F,aAAa,EAAE,wCAAwC;IACvD,cAAc,EAAE,0CAA0C;IAC1D,cAAc,EAAE,0CAA0C;IAC1D,iBAAiB,EAAE,gDAAgD;IACnE,gBAAgB,EAAE,2CAA2C;IAC7D,cAAc,EAAE,uCAAuC;IACvD,cAAc,EAAE,uCAAuC;IACvD,cAAc,EAAE,uCAAuC;CACxD,CAAC"}
package/dist/frustum.d.ts CHANGED
@@ -27,7 +27,8 @@ export declare function isFrustumContainingPoint(frustum: Readonly<FrustumLike>,
27
27
  * Returns whether an axis-aligned bounding box intersects (or is contained by) the frustum.
28
28
  * Uses the conservative positive-vertex test: the box is rejected only when it lies entirely
29
29
  * on the outside (negative) side of any single plane. This may report a false positive for
30
- * boxes straddling a frustum corner but never a false negative.
30
+ * boxes straddling a frustum corner but never a false negative. An empty box (min > max on any
31
+ * axis) always returns false.
31
32
  */
32
33
  export declare function isFrustumIntersectingAabb(frustum: Readonly<FrustumLike>, aabb: Readonly<AabbLike>): boolean;
33
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"frustum.d.ts","sourceRoot":"","sources":["../src/frustum.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,WAAW,EAEX,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAIlC;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CASvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,EAAE,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CA0BjH;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAS9G;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAS3G;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,OAAO,CAWT;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CA0BnG"}
1
+ {"version":3,"file":"frustum.d.ts","sourceRoot":"","sources":["../src/frustum.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,WAAW,EAEX,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAIlC;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CASvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,EAAE,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CA0BjH;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAS9G;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAW3G;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,OAAO,CAWT;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CA0BnG"}
package/dist/frustum.js CHANGED
@@ -70,9 +70,12 @@ export function isFrustumContainingPoint(frustum, point) {
70
70
  * Returns whether an axis-aligned bounding box intersects (or is contained by) the frustum.
71
71
  * Uses the conservative positive-vertex test: the box is rejected only when it lies entirely
72
72
  * on the outside (negative) side of any single plane. This may report a false positive for
73
- * boxes straddling a frustum corner but never a false negative.
73
+ * boxes straddling a frustum corner but never a false negative. An empty box (min > max on any
74
+ * axis) always returns false.
74
75
  */
75
76
  export function isFrustumIntersectingAabb(frustum, aabb) {
77
+ if (aabb.min.x > aabb.max.x || aabb.min.y > aabb.max.y || aabb.min.z > aabb.max.z)
78
+ return false;
76
79
  return (__planeIntersectsAabb(frustum.left, aabb) &&
77
80
  __planeIntersectsAabb(frustum.right, aabb) &&
78
81
  __planeIntersectsAabb(frustum.bottom, aabb) &&