@faicad/faijs 0.32.3 → 0.33.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.
Files changed (196) hide show
  1. package/dist/api/api-namespace.js +3 -3
  2. package/dist/api/api-namespace.js.map +1 -1
  3. package/dist/api/assembly/index.d.ts +1 -0
  4. package/dist/api/assembly/index.d.ts.map +1 -1
  5. package/dist/api/assembly/index.js +1 -0
  6. package/dist/api/assembly/index.js.map +1 -1
  7. package/dist/api/assembly/lower.d.ts.map +1 -1
  8. package/dist/api/assembly/lower.js +7 -0
  9. package/dist/api/assembly/lower.js.map +1 -1
  10. package/dist/api/assembly/normalize.d.ts.map +1 -1
  11. package/dist/api/assembly/normalize.js +2 -1
  12. package/dist/api/assembly/normalize.js.map +1 -1
  13. package/dist/api/assembly/solve-tree.d.ts +46 -0
  14. package/dist/api/assembly/solve-tree.d.ts.map +1 -0
  15. package/dist/api/assembly/solve-tree.js +135 -0
  16. package/dist/api/assembly/solve-tree.js.map +1 -0
  17. package/dist/api/assembly/solve.d.ts +7 -0
  18. package/dist/api/assembly/solve.d.ts.map +1 -1
  19. package/dist/api/assembly/solve.js.map +1 -1
  20. package/dist/api/assembly/solvers/assembly-tree.d.ts +4 -0
  21. package/dist/api/assembly/solvers/assembly-tree.d.ts.map +1 -1
  22. package/dist/api/assembly/solvers/assembly-tree.js +1 -0
  23. package/dist/api/assembly/solvers/assembly-tree.js.map +1 -1
  24. package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
  25. package/dist/api/assembly/solvers/global-solver.js +210 -3
  26. package/dist/api/assembly/solvers/global-solver.js.map +1 -1
  27. package/dist/api/assembly/solvers/types.d.ts +8 -0
  28. package/dist/api/assembly/solvers/types.d.ts.map +1 -1
  29. package/dist/api/assembly/solvers/types.js.map +1 -1
  30. package/dist/api/assembly/types.d.ts +32 -1
  31. package/dist/api/assembly/types.d.ts.map +1 -1
  32. package/dist/api/assembly/types.js.map +1 -1
  33. package/dist/api/assembly/validate.d.ts +2 -2
  34. package/dist/api/assembly/validate.d.ts.map +1 -1
  35. package/dist/api/assembly/validate.js +24 -2
  36. package/dist/api/assembly/validate.js.map +1 -1
  37. package/dist/api/cadquery-selectors/edge.js +1 -1
  38. package/dist/api/cadquery-selectors/edge.js.map +1 -1
  39. package/dist/api/cadquery-selectors/entity.d.ts +29 -20
  40. package/dist/api/cadquery-selectors/entity.d.ts.map +1 -1
  41. package/dist/api/cadquery-selectors/entity.js +26 -20
  42. package/dist/api/cadquery-selectors/entity.js.map +1 -1
  43. package/dist/api/cadquery-selectors/face.d.ts +4 -2
  44. package/dist/api/cadquery-selectors/face.d.ts.map +1 -1
  45. package/dist/api/cadquery-selectors/face.js +8 -7
  46. package/dist/api/cadquery-selectors/face.js.map +1 -1
  47. package/dist/api/cadquery-selectors/resolve.d.ts +7 -6
  48. package/dist/api/cadquery-selectors/resolve.d.ts.map +1 -1
  49. package/dist/api/cadquery-selectors/resolve.js +13 -11
  50. package/dist/api/cadquery-selectors/resolve.js.map +1 -1
  51. package/dist/api/chamfer.js +1 -1
  52. package/dist/api/chamfer.js.map +1 -1
  53. package/dist/api/draft.js +1 -1
  54. package/dist/api/draft.js.map +1 -1
  55. package/dist/api/edge-ref.js +2 -2
  56. package/dist/api/edge-ref.js.map +1 -1
  57. package/dist/api/engrave.js +1 -1
  58. package/dist/api/engrave.js.map +1 -1
  59. package/dist/api/export-3mf.js +1 -1
  60. package/dist/api/export-3mf.js.map +1 -1
  61. package/dist/api/export-brep.js +1 -1
  62. package/dist/api/export-brep.js.map +1 -1
  63. package/dist/api/export-step.d.ts +12 -13
  64. package/dist/api/export-step.d.ts.map +1 -1
  65. package/dist/api/export-step.js +19 -17
  66. package/dist/api/export-step.js.map +1 -1
  67. package/dist/api/extrude.js +3 -3
  68. package/dist/api/extrude.js.map +1 -1
  69. package/dist/api/face-ref.js +2 -2
  70. package/dist/api/face-ref.js.map +1 -1
  71. package/dist/api/feature-repair.js +2 -2
  72. package/dist/api/feature-repair.js.map +1 -1
  73. package/dist/api/fillet-variable.js +1 -1
  74. package/dist/api/fillet-variable.js.map +1 -1
  75. package/dist/api/fillet.js +1 -1
  76. package/dist/api/fillet.js.map +1 -1
  77. package/dist/api/geom.js +1 -1
  78. package/dist/api/geom.js.map +1 -1
  79. package/dist/api/import-step.d.ts.map +1 -1
  80. package/dist/api/import-step.js +4 -2
  81. package/dist/api/import-step.js.map +1 -1
  82. package/dist/api/pattern.js +1 -1
  83. package/dist/api/pattern.js.map +1 -1
  84. package/dist/api/place.js +1 -1
  85. package/dist/api/place.js.map +1 -1
  86. package/dist/api/punch-hole.js +1 -1
  87. package/dist/api/punch-hole.js.map +1 -1
  88. package/dist/api/replicate.js +1 -1
  89. package/dist/api/replicate.js.map +1 -1
  90. package/dist/api/revolve.js +1 -1
  91. package/dist/api/revolve.js.map +1 -1
  92. package/dist/api/section-by-plane.js +1 -1
  93. package/dist/api/section-by-plane.js.map +1 -1
  94. package/dist/api/shell.js +1 -1
  95. package/dist/api/shell.js.map +1 -1
  96. package/dist/api/sketch-on-face.js +1 -1
  97. package/dist/api/sketch-on-face.js.map +1 -1
  98. package/dist/api/split-by-plane.js +1 -1
  99. package/dist/api/split-by-plane.js.map +1 -1
  100. package/dist/api/split.js +1 -1
  101. package/dist/api/split.js.map +1 -1
  102. package/dist/api/thicken.js +1 -1
  103. package/dist/api/thicken.js.map +1 -1
  104. package/dist/api/topo-resolve.js +4 -4
  105. package/dist/api/topo-resolve.js.map +1 -1
  106. package/dist/api/transform.js +1 -1
  107. package/dist/api/transform.js.map +1 -1
  108. package/dist/api/view/view-projection.d.ts +8 -0
  109. package/dist/api/view/view-projection.d.ts.map +1 -1
  110. package/dist/api/view/view-projection.js +73 -2
  111. package/dist/api/view/view-projection.js.map +1 -1
  112. package/dist/boolean/cross-section.d.ts.map +1 -1
  113. package/dist/boolean/cross-section.js +3 -1
  114. package/dist/boolean/cross-section.js.map +1 -1
  115. package/dist/brep/brep-ops.d.ts +26 -0
  116. package/dist/brep/brep-ops.d.ts.map +1 -1
  117. package/dist/brep/brep-ops.js +45 -0
  118. package/dist/brep/brep-ops.js.map +1 -1
  119. package/dist/brep/brep-topology.js +1 -1
  120. package/dist/brep/brep-topology.js.map +1 -1
  121. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  122. package/dist/brep/engine/adapters/brep-mock.js +2 -0
  123. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  124. package/dist/brep/engine/primitives.d.ts +17 -0
  125. package/dist/brep/engine/primitives.d.ts.map +1 -1
  126. package/dist/brep/engine/primitives.js.map +1 -1
  127. package/dist/brep/export/export-model.d.ts.map +1 -1
  128. package/dist/brep/export/export-model.js +36 -11
  129. package/dist/brep/export/export-model.js.map +1 -1
  130. package/dist/brep/export/step-flat.d.ts +35 -0
  131. package/dist/brep/export/step-flat.d.ts.map +1 -0
  132. package/dist/brep/export/step-flat.js +94 -0
  133. package/dist/brep/export/step-flat.js.map +1 -0
  134. package/dist/brep/export/step.d.ts.map +1 -1
  135. package/dist/brep/export/step.js +42 -21
  136. package/dist/brep/export/step.js.map +1 -1
  137. package/dist/brep/handle-bridge.d.ts +4 -4
  138. package/dist/brep/handle-bridge.js +4 -4
  139. package/dist/brep/handle-bridge.js.map +1 -1
  140. package/dist/brep/svg/svg-to-solid.d.ts +3 -17
  141. package/dist/brep/svg/svg-to-solid.d.ts.map +1 -1
  142. package/dist/brep/svg/svg-to-solid.js +16 -317
  143. package/dist/brep/svg/svg-to-solid.js.map +1 -1
  144. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  145. package/dist/brepkit-kernel/brepkitKernel.js +10 -0
  146. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  147. package/dist/brepkit-kernel/brepkitWasm.d.ts +1 -1
  148. package/dist/brepkit-kernel/brepkitWasm.d.ts.map +1 -1
  149. package/dist/brepkit-kernel/brepkitWasm.js +7 -6
  150. package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
  151. package/dist/brepkit-kernel/multi-version-test.d.ts +7 -7
  152. package/dist/brepkit-kernel/multi-version-test.d.ts.map +1 -1
  153. package/dist/brepkit-kernel/multi-version-test.js +10 -10
  154. package/dist/brepkit-kernel/multi-version-test.js.map +1 -1
  155. package/dist/cad-runtime/direct-executor.js +2 -2
  156. package/dist/cad-runtime/direct-executor.js.map +1 -1
  157. package/dist/cad-runtime/runtime.js +5 -5
  158. package/dist/cad-runtime/runtime.js.map +1 -1
  159. package/dist/geometry2d/curve2d.js +42 -1
  160. package/dist/geometry2d/curve2d.js.map +1 -1
  161. package/dist/math3d/Box3.js.map +1 -1
  162. package/dist/math3d/Euler.js.map +1 -1
  163. package/dist/math3d/Mat4.js.map +1 -1
  164. package/dist/math3d/Plane.js.map +1 -1
  165. package/dist/math3d/Quat.js.map +1 -1
  166. package/dist/math3d/Vec2.js.map +1 -1
  167. package/dist/math3d/Vec3.js.map +1 -1
  168. package/dist/math3d/index.js.map +1 -1
  169. package/dist/mesh/meshdata/contour.d.ts +34 -0
  170. package/dist/mesh/meshdata/contour.d.ts.map +1 -0
  171. package/dist/mesh/meshdata/contour.js +39 -0
  172. package/dist/mesh/meshdata/contour.js.map +1 -0
  173. package/dist/mesh/meshdata/extrude.d.ts +25 -0
  174. package/dist/mesh/meshdata/extrude.d.ts.map +1 -0
  175. package/dist/mesh/meshdata/extrude.js +198 -0
  176. package/dist/mesh/meshdata/extrude.js.map +1 -0
  177. package/dist/mesh/meshdata/index.js.map +1 -1
  178. package/dist/mesh/meshdata/ops.js.map +1 -1
  179. package/dist/mesh/meshdata/parametric.js.map +1 -1
  180. package/dist/mesh/meshdata/weld.js.map +1 -1
  181. package/dist/node-host/cli.d.ts +9 -0
  182. package/dist/node-host/cli.d.ts.map +1 -1
  183. package/dist/node-host/cli.js +34 -9
  184. package/dist/node-host/cli.js.map +1 -1
  185. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  186. package/dist/occt-kernel/occt-primitives.js +2 -0
  187. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  188. package/dist/primitives/svg/svg-path.d.ts +192 -0
  189. package/dist/primitives/svg/svg-path.d.ts.map +1 -0
  190. package/dist/primitives/svg/svg-path.js +776 -0
  191. package/dist/primitives/svg/svg-path.js.map +1 -0
  192. package/dist/third-party/earcut.d.ts +19 -0
  193. package/dist/third-party/earcut.d.ts.map +1 -0
  194. package/dist/third-party/earcut.js +575 -0
  195. package/dist/third-party/earcut.js.map +1 -0
  196. package/package.json +10 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Mat4.js","sourceRoot":"","sources":["../../src/math3d/Mat4.ts"],"names":[],"mappings":"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CjB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACtD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC7H,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC7H,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACrB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC7H,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG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","sourcesContent":["/**\r\n * math3d/Mat4 — three.js r162 `Matrix4` 的算法子集移植。\r\n *\r\n * Ported from three.js r162 `src/math/Matrix4.js` (MIT License, © 2010-2024\r\n * three.js authors). **列主序** `elements`(长度 16)与 three 一致,公式逐行照抄\r\n * 以保证逐位一致。未移植相机/投影相关方法(makePerspective / makeOrthographic /\r\n * lookAt / decompose / determinant 等,core 不用)。\r\n */\r\n\r\nimport { Vec3 } from './Vec3'\r\nimport { Quat } from './Quat'\r\n\r\nconst _zero = /*@__PURE__*/ new Vec3(0, 0, 0)\r\nconst _one = /*@__PURE__*/ new Vec3(1, 1, 1)\r\n\r\n/**\r\n * Structural 4x4 matrix: three's column-major `elements` layout.\r\n *\r\n * Used for public-API parameters that previously accepted `THREE.Matrix4`\r\n * (three's class and this module's `Mat4` both satisfy it → no breaking change).\r\n */\r\nexport interface MatrixLike {\r\n elements: number[]\r\n}\r\n\r\n/** 4x4 matrix (column-major elements), three.js `Matrix4` subset. */\r\nexport class Mat4 {\r\n /** three 内部标记。 */\r\n readonly isMatrix4 = true\r\n\r\n /** Column-major 16-element storage. */\r\n elements: number[]\r\n\r\n /**\r\n * @param n11 - initial value, or omitted for identity.\r\n * @param n12 - initial value.\r\n * @param n13 - initial value.\r\n * @param n14 - initial value.\r\n * @param n21 - initial value.\r\n * @param n22 - initial value.\r\n * @param n23 - initial value.\r\n * @param n24 - initial value.\r\n * @param n31 - initial value.\r\n * @param n32 - initial value.\r\n * @param n33 - initial value.\r\n * @param n34 - initial value.\r\n * @param n41 - initial value.\r\n * @param n42 - initial value.\r\n * @param n43 - initial value.\r\n * @param n44 - initial value.\r\n */\r\n constructor(\r\n n11?: number, n12?: number, n13?: number, n14?: number,\r\n n21?: number, n22?: number, n23?: number, n24?: number,\r\n n31?: number, n32?: number, n33?: number, n34?: number,\r\n n41?: number, n42?: number, n43?: number, n44?: number,\r\n ) {\r\n this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\r\n if (n11 !== undefined) {\r\n this.set(n11, n12!, n13!, n14!, n21!, n22!, n23!, n24!, n31!, n32!, n33!, n34!, n41!, n42!, n43!, n44!)\r\n }\r\n }\r\n\r\n /**\r\n * Set all 16 elements in column-major order.\n * @param n11 - element (row 1, col 1).\r\n * @param n12 - element (row 1, col 2).\r\n * @param n13 - element (row 1, col 3).\r\n * @param n14 - element (row 1, col 4).\r\n * @param n21 - element (row 2, col 1).\r\n * @param n22 - element (row 2, col 2).\r\n * @param n23 - element (row 2, col 3).\r\n * @param n24 - element (row 2, col 4).\r\n * @param n31 - element (row 3, col 1).\r\n * @param n32 - element (row 3, col 2).\r\n * @param n33 - element (row 3, col 3).\r\n * @param n34 - element (row 3, col 4).\r\n * @param n41 - element (row 4, col 1).\r\n * @param n42 - element (row 4, col 2).\r\n * @param n43 - element (row 4, col 3).\r\n * @param n44 - element (row 4, col 4).\r\n * @returns this\r\n */\r\n set(\r\n n11: number, n12: number, n13: number, n14: number,\r\n n21: number, n22: number, n23: number, n24: number,\r\n n31: number, n32: number, n33: number, n34: number,\r\n n41: number, n42: number, n43: number, n44: number,\r\n ): this {\r\n const te = this.elements\r\n te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14\r\n te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24\r\n te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34\r\n te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44\r\n return this\r\n }\r\n\r\n /**\r\n * Set to the identity matrix.\n * @returns this (identity)\r\n */\r\n identity(): this {\r\n this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n return this\r\n }\r\n\r\n /**\r\n * Return a new matrix with the same elements.\n * @returns a new matrix with the same elements.\r\n */\r\n clone(): Mat4 {\r\n return new Mat4().fromArray(this.elements)\r\n }\r\n\r\n /**\r\n * Copy the elements from another matrix.\n * @param m - source matrix.\r\n * @returns this\r\n */\r\n copy(m: Mat4): this {\r\n const te = this.elements\r\n const me = m.elements\r\n for (let i = 0; i < 16; i++) te[i] = me[i]\r\n return this\r\n }\r\n\r\n /**\r\n * Set the basis vectors (columns) of the matrix.\n * @param xAxis - basis X vector.\r\n * @param yAxis - basis Y vector.\r\n * @param zAxis - basis Z vector.\r\n * @returns this\r\n */\r\n makeBasis(xAxis: Vec3, yAxis: Vec3, zAxis: Vec3): this {\r\n this.set(\r\n xAxis.x, yAxis.x, zAxis.x, 0,\r\n xAxis.y, yAxis.y, zAxis.y, 0,\r\n xAxis.z, yAxis.z, zAxis.z, 0,\r\n 0, 0, 0, 1,\r\n )\r\n return this\r\n }\r\n\r\n /**\r\n * Set the rotation part from Euler angles (radians).\n * @param euler - Euler angles (radians) with an order tag.\r\n * @returns this\r\n */\r\n makeRotationFromEuler(euler: { x: number; y: number; z: number; order: string }): this {\r\n const te = this.elements\r\n const x = euler.x\r\n const y = euler.y\r\n const z = euler.z\r\n const a = Math.cos(x)\r\n const b = Math.sin(x)\r\n const c = Math.cos(y)\r\n const d = Math.sin(y)\r\n const e = Math.cos(z)\r\n const f = Math.sin(z)\r\n\r\n if (euler.order === 'XYZ') {\r\n const ae = a * e\r\n const af = a * f\r\n const be = b * e\r\n const bf = b * f\r\n te[0] = c * e; te[4] = -c * f; te[8] = d\r\n te[1] = af + be * d; te[5] = ae - bf * d; te[9] = -b * c\r\n te[2] = bf - ae * d; te[6] = be + af * d; te[10] = a * c\r\n } else if (euler.order === 'YXZ') {\r\n const ce = c * e\r\n const cf = c * f\r\n const de = d * e\r\n const df = d * f\r\n te[0] = ce + df * b; te[4] = de * b - cf; te[8] = a * d\r\n te[1] = a * f; te[5] = a * e; te[9] = -b\r\n te[2] = cf * b - de; te[6] = df + ce * b; te[10] = a * c\r\n } else if (euler.order === 'ZXY') {\r\n const ce = c * e\r\n const cf = c * f\r\n const de = d * e\r\n const df = d * f\r\n te[0] = ce - df * b; te[4] = -a * f; te[8] = de + cf * b\r\n te[1] = cf + de * b; te[5] = a * e; te[9] = df - ce * b\r\n te[2] = -a * d; te[6] = b; te[10] = a * c\r\n } else if (euler.order === 'ZYX') {\r\n const ae = a * e\r\n const af = a * f\r\n const be = b * e\r\n const bf = b * f\r\n te[0] = c * e; te[4] = be * d - af; te[8] = ae * d + bf\r\n te[1] = c * f; te[5] = bf * d + ae; te[9] = af * d - be\r\n te[2] = -d; te[6] = b * c; te[10] = a * c\r\n } else if (euler.order === 'YZX') {\r\n const ac = a * c\r\n const ad = a * d\r\n const bc = b * c\r\n const bd = b * d\r\n te[0] = c * e; te[4] = bd - ac * f; te[8] = bc * f + ad\r\n te[1] = f; te[5] = a * e; te[9] = -b * e\r\n te[2] = -d * e; te[6] = ad * f + bc; te[10] = ac - bd * f\r\n } else if (euler.order === 'XZY') {\r\n const ac = a * c\r\n const ad = a * d\r\n const bc = b * c\r\n const bd = b * d\r\n te[0] = c * e; te[4] = -f; te[8] = d * e\r\n te[1] = ac * f + bd; te[5] = a * e; te[9] = ad * f - bc\r\n te[2] = bc * f - ad; te[6] = b * e; te[10] = bd * f + ac\r\n }\r\n\r\n te[3] = 0; te[7] = 0; te[11] = 0\r\n te[12] = 0; te[13] = 0; te[14] = 0; te[15] = 1\r\n return this\r\n }\r\n\r\n /**\r\n * Set the rotation part from a quaternion.\n * @param q - rotation quaternion.\r\n * @returns this\r\n */\r\n makeRotationFromQuaternion(q: Quat): this {\r\n return this.compose(_zero, q, _one)\r\n }\r\n\r\n /**\r\n * Multiply by another matrix (this = this * m).\n * @param m - right operand.\r\n * @returns this\r\n */\r\n multiply(m: Mat4): this {\r\n return this.multiplyMatrices(this, m)\r\n }\r\n\r\n /**\r\n * Pre-multiply by another matrix (this = m * this).\n * @param m - left operand.\r\n * @returns this\r\n */\r\n premultiply(m: Mat4): this {\r\n return this.multiplyMatrices(m, this)\r\n }\r\n\r\n /**\r\n * Set this to a * b.\r\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n multiplyMatrices(a: Mat4, b: Mat4): this {\r\n const ae = a.elements\r\n const be = b.elements\r\n const te = this.elements\r\n const a11 = ae[0]\r\n const a12 = ae[4]\r\n const a13 = ae[8]\r\n const a14 = ae[12]\r\n const a21 = ae[1]\r\n const a22 = ae[5]\r\n const a23 = ae[9]\r\n const a24 = ae[13]\r\n const a31 = ae[2]\r\n const a32 = ae[6]\r\n const a33 = ae[10]\r\n const a34 = ae[14]\r\n const a41 = ae[3]\r\n const a42 = ae[7]\r\n const a43 = ae[11]\r\n const a44 = ae[15]\r\n const b11 = be[0]\r\n const b12 = be[4]\r\n const b13 = be[8]\r\n const b14 = be[12]\r\n const b21 = be[1]\r\n const b22 = be[5]\r\n const b23 = be[9]\r\n const b24 = be[13]\r\n const b31 = be[2]\r\n const b32 = be[6]\r\n const b33 = be[10]\r\n const b34 = be[14]\r\n const b41 = be[3]\r\n const b42 = be[7]\r\n const b43 = be[11]\r\n const b44 = be[15]\r\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41\r\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42\r\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43\r\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44\r\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41\r\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42\r\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43\r\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44\r\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41\r\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42\r\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43\r\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44\r\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41\r\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42\r\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43\r\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44\r\n return this\r\n }\r\n\r\n /**\r\n * Set the translation part (last column).\n * @param x - X translation, or a Vec3.\r\n * @param y - Y translation.\r\n * @param z - Z translation.\r\n * @returns this\r\n */\r\n setPosition(x: number | Vec3, y?: number, z?: number): this {\r\n const te = this.elements\r\n if (typeof x === 'object') {\r\n te[12] = x.x\r\n te[13] = x.y\r\n te[14] = x.z\r\n } else {\r\n te[12] = x\r\n te[13] = y!\r\n te[14] = z!\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Invert the matrix in place.\n * @returns this (inverse; zero matrix when singular, matching three)\r\n */\r\n invert(): this {\r\n const te = this.elements\r\n const n11 = te[0]\r\n const n21 = te[1]\r\n const n31 = te[2]\r\n const n41 = te[3]\r\n const n12 = te[4]\r\n const n22 = te[5]\r\n const n32 = te[6]\r\n const n42 = te[7]\r\n const n13 = te[8]\r\n const n23 = te[9]\r\n const n33 = te[10]\r\n const n43 = te[11]\r\n const n14 = te[12]\r\n const n24 = te[13]\r\n const n34 = te[14]\r\n const n44 = te[15]\r\n const t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44\r\n const t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44\r\n const t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44\r\n const t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34\r\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14\r\n if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\r\n const detInv = 1 / det\r\n te[0] = t11 * detInv\r\n te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv\r\n te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv\r\n te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv\r\n te[4] = t12 * detInv\r\n te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv\r\n te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv\r\n te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv\r\n te[8] = t13 * detInv\r\n te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv\r\n te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv\r\n te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv\r\n te[12] = t14 * detInv\r\n te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv\r\n te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv\r\n te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv\r\n return this\r\n }\r\n\r\n /**\r\n * Set to a translation matrix.\n * @param x - X translation, or a Vec3.\r\n * @param y - Y translation.\r\n * @param z - Z translation.\r\n * @returns this\r\n */\r\n makeTranslation(x: number | Vec3, y?: number, z?: number): this {\r\n if (typeof x === 'object') {\r\n this.set(1, 0, 0, x.x, 0, 1, 0, x.y, 0, 0, 1, x.z, 0, 0, 0, 1)\r\n } else {\r\n this.set(1, 0, 0, x, 0, 1, 0, y!, 0, 0, 1, z!, 0, 0, 0, 1)\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Set to a rotation matrix around the X axis.\n * @param theta - rotation angle in radians.\r\n * @returns this\r\n */\r\n makeRotationX(theta: number): this {\r\n const c = Math.cos(theta)\r\n const s = Math.sin(theta)\r\n this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1)\r\n return this\r\n }\r\n\r\n /**\r\n * Set to a rotation matrix around the Y axis.\n * @param theta - rotation angle in radians.\r\n * @returns this\r\n */\r\n makeRotationY(theta: number): this {\r\n const c = Math.cos(theta)\r\n const s = Math.sin(theta)\r\n this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1)\r\n return this\r\n }\r\n\r\n /**\r\n * Set to a rotation matrix around the Z axis.\n * @param theta - rotation angle in radians.\r\n * @returns this\r\n */\r\n makeRotationZ(theta: number): this {\r\n const c = Math.cos(theta)\r\n const s = Math.sin(theta)\r\n this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n return this\r\n }\r\n\r\n /**\r\n * Set to a scale matrix.\n * @param x - X scale.\r\n * @param y - Y scale.\r\n * @param z - Z scale.\r\n * @returns this\r\n */\r\n makeScale(x: number, y: number, z: number): this {\r\n this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1)\r\n return this\r\n }\r\n\r\n /**\r\n * Set from position, quaternion and scale.\n * @param position - translation.\r\n * @param quaternion - rotation.\r\n * @param scale - scale.\r\n * @returns this\r\n */\r\n compose(position: Vec3, quaternion: Quat, scale: Vec3): this {\r\n const te = this.elements\r\n const x = quaternion.x\r\n const y = quaternion.y\r\n const z = quaternion.z\r\n const w = quaternion.w\r\n const x2 = x + x\r\n const y2 = y + y\r\n const z2 = z + z\r\n const xx = x * x2\r\n const xy = x * y2\r\n const xz = x * z2\r\n const yy = y * y2\r\n const yz = y * z2\r\n const zz = z * z2\r\n const wx = w * x2\r\n const wy = w * y2\r\n const wz = w * z2\r\n const sx = scale.x\r\n const sy = scale.y\r\n const sz = scale.z\r\n te[0] = (1 - (yy + zz)) * sx\r\n te[1] = (xy + wz) * sx\r\n te[2] = (xz - wy) * sx\r\n te[3] = 0\r\n te[4] = (xy - wz) * sy\r\n te[5] = (1 - (xx + zz)) * sy\r\n te[6] = (yz + wx) * sy\r\n te[7] = 0\r\n te[8] = (xz + wy) * sz\r\n te[9] = (yz - wx) * sz\r\n te[10] = (1 - (xx + yy)) * sz\r\n te[11] = 0\r\n te[12] = position.x\r\n te[13] = position.y\r\n te[14] = position.z\r\n te[15] = 1\r\n return this\r\n }\r\n\r\n /**\r\n * Load the elements from an array-like.\n * @param array - source array.\r\n * @param offset - start offset.\r\n * @returns this\r\n */\r\n fromArray(array: ArrayLike<number>, offset = 0): this {\r\n for (let i = 0; i < 16; i++) this.elements[i] = array[i + offset]\r\n return this\r\n }\r\n\r\n /**\r\n * Write the elements into an array.\n * @param array - target array (created when omitted).\r\n * @param offset - start offset.\r\n * @returns the target array.\r\n */\r\n toArray(array: number[] = [], offset = 0): number[] {\r\n const te = this.elements\r\n for (let i = 0; i < 16; i++) array[i + offset] = te[i]\r\n return array\r\n }\r\n}"]}
1
+ {"version":3,"file":"Mat4.js","sourceRoot":"","sources":["../../src/math3d/Mat4.ts"],"names":[],"mappings":"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CjB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAClB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACtD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACrD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC5H,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC7H,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC7H,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACrB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAAA;QAC7H,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG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","sourcesContent":["/**\n * math3d/Mat4 — three.js r162 `Matrix4` 的算法子集移植。\n *\n * Ported from three.js r162 `src/math/Matrix4.js` (MIT License, © 2010-2024\n * three.js authors). **列主序** `elements`(长度 16)与 three 一致,公式逐行照抄\n * 以保证逐位一致。未移植相机/投影相关方法(makePerspective / makeOrthographic /\n * lookAt / decompose / determinant 等,core 不用)。\n */\n\nimport { Vec3 } from './Vec3'\nimport { Quat } from './Quat'\n\nconst _zero = /*@__PURE__*/ new Vec3(0, 0, 0)\nconst _one = /*@__PURE__*/ new Vec3(1, 1, 1)\n\n/**\n * Structural 4x4 matrix: three's column-major `elements` layout.\n *\n * Used for public-API parameters that previously accepted `THREE.Matrix4`\n * (three's class and this module's `Mat4` both satisfy it → no breaking change).\n */\nexport interface MatrixLike {\n elements: number[]\n}\n\n/** 4x4 matrix (column-major elements), three.js `Matrix4` subset. */\nexport class Mat4 {\n /** three 内部标记。 */\n readonly isMatrix4 = true\n\n /** Column-major 16-element storage. */\n elements: number[]\n\n /**\n * @param n11 - initial value, or omitted for identity.\n * @param n12 - initial value.\n * @param n13 - initial value.\n * @param n14 - initial value.\n * @param n21 - initial value.\n * @param n22 - initial value.\n * @param n23 - initial value.\n * @param n24 - initial value.\n * @param n31 - initial value.\n * @param n32 - initial value.\n * @param n33 - initial value.\n * @param n34 - initial value.\n * @param n41 - initial value.\n * @param n42 - initial value.\n * @param n43 - initial value.\n * @param n44 - initial value.\n */\n constructor(\n n11?: number, n12?: number, n13?: number, n14?: number,\n n21?: number, n22?: number, n23?: number, n24?: number,\n n31?: number, n32?: number, n33?: number, n34?: number,\n n41?: number, n42?: number, n43?: number, n44?: number,\n ) {\n this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n if (n11 !== undefined) {\n this.set(n11, n12!, n13!, n14!, n21!, n22!, n23!, n24!, n31!, n32!, n33!, n34!, n41!, n42!, n43!, n44!)\n }\n }\n\n /**\n * Set all 16 elements in column-major order.\n * @param n11 - element (row 1, col 1).\n * @param n12 - element (row 1, col 2).\n * @param n13 - element (row 1, col 3).\n * @param n14 - element (row 1, col 4).\n * @param n21 - element (row 2, col 1).\n * @param n22 - element (row 2, col 2).\n * @param n23 - element (row 2, col 3).\n * @param n24 - element (row 2, col 4).\n * @param n31 - element (row 3, col 1).\n * @param n32 - element (row 3, col 2).\n * @param n33 - element (row 3, col 3).\n * @param n34 - element (row 3, col 4).\n * @param n41 - element (row 4, col 1).\n * @param n42 - element (row 4, col 2).\n * @param n43 - element (row 4, col 3).\n * @param n44 - element (row 4, col 4).\n * @returns this\n */\n set(\n n11: number, n12: number, n13: number, n14: number,\n n21: number, n22: number, n23: number, n24: number,\n n31: number, n32: number, n33: number, n34: number,\n n41: number, n42: number, n43: number, n44: number,\n ): this {\n const te = this.elements\n te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14\n te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24\n te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34\n te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44\n return this\n }\n\n /**\n * Set to the identity matrix.\n * @returns this (identity)\n */\n identity(): this {\n this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n return this\n }\n\n /**\n * Return a new matrix with the same elements.\n * @returns a new matrix with the same elements.\n */\n clone(): Mat4 {\n return new Mat4().fromArray(this.elements)\n }\n\n /**\n * Copy the elements from another matrix.\n * @param m - source matrix.\n * @returns this\n */\n copy(m: Mat4): this {\n const te = this.elements\n const me = m.elements\n for (let i = 0; i < 16; i++) te[i] = me[i]\n return this\n }\n\n /**\n * Set the basis vectors (columns) of the matrix.\n * @param xAxis - basis X vector.\n * @param yAxis - basis Y vector.\n * @param zAxis - basis Z vector.\n * @returns this\n */\n makeBasis(xAxis: Vec3, yAxis: Vec3, zAxis: Vec3): this {\n this.set(\n xAxis.x, yAxis.x, zAxis.x, 0,\n xAxis.y, yAxis.y, zAxis.y, 0,\n xAxis.z, yAxis.z, zAxis.z, 0,\n 0, 0, 0, 1,\n )\n return this\n }\n\n /**\n * Set the rotation part from Euler angles (radians).\n * @param euler - Euler angles (radians) with an order tag.\n * @returns this\n */\n makeRotationFromEuler(euler: { x: number; y: number; z: number; order: string }): this {\n const te = this.elements\n const x = euler.x\n const y = euler.y\n const z = euler.z\n const a = Math.cos(x)\n const b = Math.sin(x)\n const c = Math.cos(y)\n const d = Math.sin(y)\n const e = Math.cos(z)\n const f = Math.sin(z)\n\n if (euler.order === 'XYZ') {\n const ae = a * e\n const af = a * f\n const be = b * e\n const bf = b * f\n te[0] = c * e; te[4] = -c * f; te[8] = d\n te[1] = af + be * d; te[5] = ae - bf * d; te[9] = -b * c\n te[2] = bf - ae * d; te[6] = be + af * d; te[10] = a * c\n } else if (euler.order === 'YXZ') {\n const ce = c * e\n const cf = c * f\n const de = d * e\n const df = d * f\n te[0] = ce + df * b; te[4] = de * b - cf; te[8] = a * d\n te[1] = a * f; te[5] = a * e; te[9] = -b\n te[2] = cf * b - de; te[6] = df + ce * b; te[10] = a * c\n } else if (euler.order === 'ZXY') {\n const ce = c * e\n const cf = c * f\n const de = d * e\n const df = d * f\n te[0] = ce - df * b; te[4] = -a * f; te[8] = de + cf * b\n te[1] = cf + de * b; te[5] = a * e; te[9] = df - ce * b\n te[2] = -a * d; te[6] = b; te[10] = a * c\n } else if (euler.order === 'ZYX') {\n const ae = a * e\n const af = a * f\n const be = b * e\n const bf = b * f\n te[0] = c * e; te[4] = be * d - af; te[8] = ae * d + bf\n te[1] = c * f; te[5] = bf * d + ae; te[9] = af * d - be\n te[2] = -d; te[6] = b * c; te[10] = a * c\n } else if (euler.order === 'YZX') {\n const ac = a * c\n const ad = a * d\n const bc = b * c\n const bd = b * d\n te[0] = c * e; te[4] = bd - ac * f; te[8] = bc * f + ad\n te[1] = f; te[5] = a * e; te[9] = -b * e\n te[2] = -d * e; te[6] = ad * f + bc; te[10] = ac - bd * f\n } else if (euler.order === 'XZY') {\n const ac = a * c\n const ad = a * d\n const bc = b * c\n const bd = b * d\n te[0] = c * e; te[4] = -f; te[8] = d * e\n te[1] = ac * f + bd; te[5] = a * e; te[9] = ad * f - bc\n te[2] = bc * f - ad; te[6] = b * e; te[10] = bd * f + ac\n }\n\n te[3] = 0; te[7] = 0; te[11] = 0\n te[12] = 0; te[13] = 0; te[14] = 0; te[15] = 1\n return this\n }\n\n /**\n * Set the rotation part from a quaternion.\n * @param q - rotation quaternion.\n * @returns this\n */\n makeRotationFromQuaternion(q: Quat): this {\n return this.compose(_zero, q, _one)\n }\n\n /**\n * Multiply by another matrix (this = this * m).\n * @param m - right operand.\n * @returns this\n */\n multiply(m: Mat4): this {\n return this.multiplyMatrices(this, m)\n }\n\n /**\n * Pre-multiply by another matrix (this = m * this).\n * @param m - left operand.\n * @returns this\n */\n premultiply(m: Mat4): this {\n return this.multiplyMatrices(m, this)\n }\n\n /**\n * Set this to a * b.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n multiplyMatrices(a: Mat4, b: Mat4): this {\n const ae = a.elements\n const be = b.elements\n const te = this.elements\n const a11 = ae[0]\n const a12 = ae[4]\n const a13 = ae[8]\n const a14 = ae[12]\n const a21 = ae[1]\n const a22 = ae[5]\n const a23 = ae[9]\n const a24 = ae[13]\n const a31 = ae[2]\n const a32 = ae[6]\n const a33 = ae[10]\n const a34 = ae[14]\n const a41 = ae[3]\n const a42 = ae[7]\n const a43 = ae[11]\n const a44 = ae[15]\n const b11 = be[0]\n const b12 = be[4]\n const b13 = be[8]\n const b14 = be[12]\n const b21 = be[1]\n const b22 = be[5]\n const b23 = be[9]\n const b24 = be[13]\n const b31 = be[2]\n const b32 = be[6]\n const b33 = be[10]\n const b34 = be[14]\n const b41 = be[3]\n const b42 = be[7]\n const b43 = be[11]\n const b44 = be[15]\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44\n return this\n }\n\n /**\n * Set the translation part (last column).\n * @param x - X translation, or a Vec3.\n * @param y - Y translation.\n * @param z - Z translation.\n * @returns this\n */\n setPosition(x: number | Vec3, y?: number, z?: number): this {\n const te = this.elements\n if (typeof x === 'object') {\n te[12] = x.x\n te[13] = x.y\n te[14] = x.z\n } else {\n te[12] = x\n te[13] = y!\n te[14] = z!\n }\n return this\n }\n\n /**\n * Invert the matrix in place.\n * @returns this (inverse; zero matrix when singular, matching three)\n */\n invert(): this {\n const te = this.elements\n const n11 = te[0]\n const n21 = te[1]\n const n31 = te[2]\n const n41 = te[3]\n const n12 = te[4]\n const n22 = te[5]\n const n32 = te[6]\n const n42 = te[7]\n const n13 = te[8]\n const n23 = te[9]\n const n33 = te[10]\n const n43 = te[11]\n const n14 = te[12]\n const n24 = te[13]\n const n34 = te[14]\n const n44 = te[15]\n const t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44\n const t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44\n const t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44\n const t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14\n if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n const detInv = 1 / det\n te[0] = t11 * detInv\n te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv\n te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv\n te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv\n te[4] = t12 * detInv\n te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv\n te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv\n te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv\n te[8] = t13 * detInv\n te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv\n te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv\n te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv\n te[12] = t14 * detInv\n te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv\n te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv\n te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv\n return this\n }\n\n /**\n * Set to a translation matrix.\n * @param x - X translation, or a Vec3.\n * @param y - Y translation.\n * @param z - Z translation.\n * @returns this\n */\n makeTranslation(x: number | Vec3, y?: number, z?: number): this {\n if (typeof x === 'object') {\n this.set(1, 0, 0, x.x, 0, 1, 0, x.y, 0, 0, 1, x.z, 0, 0, 0, 1)\n } else {\n this.set(1, 0, 0, x, 0, 1, 0, y!, 0, 0, 1, z!, 0, 0, 0, 1)\n }\n return this\n }\n\n /**\n * Set to a rotation matrix around the X axis.\n * @param theta - rotation angle in radians.\n * @returns this\n */\n makeRotationX(theta: number): this {\n const c = Math.cos(theta)\n const s = Math.sin(theta)\n this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1)\n return this\n }\n\n /**\n * Set to a rotation matrix around the Y axis.\n * @param theta - rotation angle in radians.\n * @returns this\n */\n makeRotationY(theta: number): this {\n const c = Math.cos(theta)\n const s = Math.sin(theta)\n this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1)\n return this\n }\n\n /**\n * Set to a rotation matrix around the Z axis.\n * @param theta - rotation angle in radians.\n * @returns this\n */\n makeRotationZ(theta: number): this {\n const c = Math.cos(theta)\n const s = Math.sin(theta)\n this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n return this\n }\n\n /**\n * Set to a scale matrix.\n * @param x - X scale.\n * @param y - Y scale.\n * @param z - Z scale.\n * @returns this\n */\n makeScale(x: number, y: number, z: number): this {\n this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1)\n return this\n }\n\n /**\n * Set from position, quaternion and scale.\n * @param position - translation.\n * @param quaternion - rotation.\n * @param scale - scale.\n * @returns this\n */\n compose(position: Vec3, quaternion: Quat, scale: Vec3): this {\n const te = this.elements\n const x = quaternion.x\n const y = quaternion.y\n const z = quaternion.z\n const w = quaternion.w\n const x2 = x + x\n const y2 = y + y\n const z2 = z + z\n const xx = x * x2\n const xy = x * y2\n const xz = x * z2\n const yy = y * y2\n const yz = y * z2\n const zz = z * z2\n const wx = w * x2\n const wy = w * y2\n const wz = w * z2\n const sx = scale.x\n const sy = scale.y\n const sz = scale.z\n te[0] = (1 - (yy + zz)) * sx\n te[1] = (xy + wz) * sx\n te[2] = (xz - wy) * sx\n te[3] = 0\n te[4] = (xy - wz) * sy\n te[5] = (1 - (xx + zz)) * sy\n te[6] = (yz + wx) * sy\n te[7] = 0\n te[8] = (xz + wy) * sz\n te[9] = (yz - wx) * sz\n te[10] = (1 - (xx + yy)) * sz\n te[11] = 0\n te[12] = position.x\n te[13] = position.y\n te[14] = position.z\n te[15] = 1\n return this\n }\n\n /**\n * Load the elements from an array-like.\n * @param array - source array.\n * @param offset - start offset.\n * @returns this\n */\n fromArray(array: ArrayLike<number>, offset = 0): this {\n for (let i = 0; i < 16; i++) this.elements[i] = array[i + offset]\n return this\n }\n\n /**\n * Write the elements into an array.\n * @param array - target array (created when omitted).\n * @param offset - start offset.\n * @returns the target array.\n */\n toArray(array: number[] = [], offset = 0): number[] {\n const te = this.elements\n for (let i = 0; i < 16; i++) array[i + offset] = te[i]\n return array\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Plane.js","sourceRoot":"","sources":["../../src/math3d/Plane.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,yDAAyD;AACzD,MAAM,OAAO,KAAK;IAChB,kBAAkB;IACT,OAAO,GAAG,IAAI,CAAA;IAEvB,gCAAgC;IAChC,MAAM,CAAM;IACZ,wDAAwD;IACxD,QAAQ,CAAQ;IAEhB;;;OAGG;IACH,YAAY,SAAe,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,MAAY,EAAE,QAAgB;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,6BAA6B,CAAC,MAAY,EAAE,KAAW;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAY;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC/C,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAW,EAAE,MAAY;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;IACtF,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAY;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChE,CAAC;CACF","sourcesContent":["/**\r\n * math3d/Plane — three.js r162 `Plane` 的算法子集移植。\r\n *\r\n * Ported from three.js r162 `src/math/Plane.js` (MIT License, © 2010-2024\r\n * three.js authors). 平面方程 `normal · p + constant = 0` 与 three 一致。\r\n * 未移植 `intersectLine` / `intersectsBox`(core 不用;需要时再补,别顺手加)。\r\n */\r\n\r\nimport { Vec3 } from './Vec3'\r\n\r\n/** Plane (normal, constant), three.js `Plane` subset. */\r\nexport class Plane {\r\n /** three 内部标记。 */\r\n readonly isPlane = true\r\n\r\n /** Unit normal of the plane. */\n normal: Vec3\r\n /** Signed distance from the origin along the normal. */\n constant: number\r\n\r\n /**\r\n * @param normal - unit normal.\r\n * @param constant - plane constant (normal · p + constant = 0).\r\n */\r\n constructor(normal: Vec3 = new Vec3(1, 0, 0), constant = 0) {\r\n this.normal = normal\r\n this.constant = constant\r\n }\r\n\r\n /**\r\n * Set the normal and constant.\n * @param normal - unit normal.\r\n * @param constant - plane constant.\r\n * @returns this\r\n */\r\n set(normal: Vec3, constant: number): this {\r\n this.normal.copy(normal)\r\n this.constant = constant\r\n return this\r\n }\r\n\r\n /**\r\n * Set from a normal and a point on the plane.\n * @param normal - unit normal.\r\n * @param point - a point on the plane.\r\n * @returns this\r\n */\r\n setFromNormalAndCoplanarPoint(normal: Vec3, point: Vec3): this {\r\n this.normal.copy(normal)\r\n this.constant = -point.dot(this.normal)\r\n return this\r\n }\r\n\r\n /**\r\n * Copy from another plane.\n * @param plane - source plane.\r\n * @returns this\r\n */\r\n copy(plane: Plane): this {\r\n this.normal.copy(plane.normal)\r\n this.constant = plane.constant\r\n return this\r\n }\r\n\r\n /**\r\n * Return a new plane with the same values.\n * @returns a new plane with the same normal and constant.\r\n */\r\n clone(): Plane {\r\n return new Plane().copy(this)\r\n }\r\n\r\n /**\r\n * Return the signed distance to a point.\n * @param point - the point to measure.\r\n * @returns the signed distance from the plane.\r\n */\r\n distanceToPoint(point: Vec3): number {\r\n return this.normal.dot(point) + this.constant\r\n }\r\n\r\n /**\r\n * Project a point onto the plane.\n * @param point - the point to project.\r\n * @param target - the output vector.\r\n * @returns the projected point (stored in target).\r\n */\r\n projectPoint(point: Vec3, target: Vec3): Vec3 {\r\n return target.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point))\r\n }\r\n\r\n /**\r\n * Return a point on the plane.\n * @param target - the output vector.\r\n * @returns an arbitrary point on the plane (stored in target).\r\n */\r\n coplanarPoint(target: Vec3): Vec3 {\r\n return target.copy(this.normal).multiplyScalar(-this.constant)\r\n }\r\n}"]}
1
+ {"version":3,"file":"Plane.js","sourceRoot":"","sources":["../../src/math3d/Plane.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,yDAAyD;AACzD,MAAM,OAAO,KAAK;IAChB,kBAAkB;IACT,OAAO,GAAG,IAAI,CAAA;IAEvB,gCAAgC;IAChC,MAAM,CAAM;IACZ,wDAAwD;IACxD,QAAQ,CAAQ;IAEhB;;;OAGG;IACH,YAAY,SAAe,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,MAAY,EAAE,QAAgB;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,6BAA6B,CAAC,MAAY,EAAE,KAAW;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAY;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC/C,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAW,EAAE,MAAY;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;IACtF,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAY;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChE,CAAC;CACF","sourcesContent":["/**\n * math3d/Plane — three.js r162 `Plane` 的算法子集移植。\n *\n * Ported from three.js r162 `src/math/Plane.js` (MIT License, © 2010-2024\n * three.js authors). 平面方程 `normal · p + constant = 0` 与 three 一致。\n * 未移植 `intersectLine` / `intersectsBox`(core 不用;需要时再补,别顺手加)。\n */\n\nimport { Vec3 } from './Vec3'\n\n/** Plane (normal, constant), three.js `Plane` subset. */\nexport class Plane {\n /** three 内部标记。 */\n readonly isPlane = true\n\n /** Unit normal of the plane. */\n normal: Vec3\n /** Signed distance from the origin along the normal. */\n constant: number\n\n /**\n * @param normal - unit normal.\n * @param constant - plane constant (normal · p + constant = 0).\n */\n constructor(normal: Vec3 = new Vec3(1, 0, 0), constant = 0) {\n this.normal = normal\n this.constant = constant\n }\n\n /**\n * Set the normal and constant.\n * @param normal - unit normal.\n * @param constant - plane constant.\n * @returns this\n */\n set(normal: Vec3, constant: number): this {\n this.normal.copy(normal)\n this.constant = constant\n return this\n }\n\n /**\n * Set from a normal and a point on the plane.\n * @param normal - unit normal.\n * @param point - a point on the plane.\n * @returns this\n */\n setFromNormalAndCoplanarPoint(normal: Vec3, point: Vec3): this {\n this.normal.copy(normal)\n this.constant = -point.dot(this.normal)\n return this\n }\n\n /**\n * Copy from another plane.\n * @param plane - source plane.\n * @returns this\n */\n copy(plane: Plane): this {\n this.normal.copy(plane.normal)\n this.constant = plane.constant\n return this\n }\n\n /**\n * Return a new plane with the same values.\n * @returns a new plane with the same normal and constant.\n */\n clone(): Plane {\n return new Plane().copy(this)\n }\n\n /**\n * Return the signed distance to a point.\n * @param point - the point to measure.\n * @returns the signed distance from the plane.\n */\n distanceToPoint(point: Vec3): number {\n return this.normal.dot(point) + this.constant\n }\n\n /**\n * Project a point onto the plane.\n * @param point - the point to project.\n * @param target - the output vector.\n * @returns the projected point (stored in target).\n */\n projectPoint(point: Vec3, target: Vec3): Vec3 {\n return target.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point))\n }\n\n /**\n * Return a point on the plane.\n * @param target - the output vector.\n * @returns an arbitrary point on the plane (stored in target).\n */\n coplanarPoint(target: Vec3): Vec3 {\n return target.copy(this.normal).multiplyScalar(-this.constant)\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Quat.js","sourceRoot":"","sources":["../../src/math3d/Quat.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * math3d/Quat — three.js r162 `Quaternion` 的算法子集移植。\r\n *\r\n * Ported from three.js r162 `src/math/Quaternion.js` (MIT License, © 2010-2024\r\n * three.js authors). 公式与运算顺序逐行照抄以保证逐位一致;`_onChange`\r\n * 回调机制(three 的渲染用)未移植——本类只做数学。\r\n */\r\n\r\nimport type { Vec3 } from './Vec3'\r\n\r\n/** Quaternion (x, y, z, w), three.js `Quaternion` subset. */\r\nexport class Quat {\r\n /** X component. */\r\n x: number\r\n /** Y component. */\r\n y: number\r\n /** Z component. */\r\n z: number\r\n /** W (scalar) component. */\r\n w: number\r\n\r\n /**\r\n * @param x - X component.\r\n * @param y - Y component.\r\n * @param z - Z component.\r\n * @param w - W (scalar) component.\r\n */\r\n constructor(x = 0, y = 0, z = 0, w = 1) {\r\n this.x = x\r\n this.y = y\r\n this.z = z\r\n this.w = w\r\n }\r\n\r\n /**\r\n * Set the component values.\r\n * @param x - X component.\r\n * @param y - Y component.\r\n * @param z - Z component.\r\n * @param w - W (scalar) component.\r\n * @returns this\r\n */\r\n set(x: number, y: number, z: number, w: number): this {\r\n this.x = x\r\n this.y = y\r\n this.z = z\r\n this.w = w\r\n return this\r\n }\r\n\r\n /**\r\n * Copy the components from another quaternion.\r\n * @param q - source quaternion.\r\n * @returns this\r\n */\r\n copy(q: Quat): this {\r\n this.x = q.x\r\n this.y = q.y\r\n this.z = q.z\r\n this.w = q.w\r\n return this\r\n }\r\n\r\n /**\r\n * Return a new quaternion with the same components.\r\n * @returns a new quaternion with the same components.\r\n */\r\n clone(): Quat {\r\n return new Quat(this.x, this.y, this.z, this.w)\r\n }\r\n\r\n /**\r\n * Set to the identity quaternion.\r\n * @returns this (identity quaternion)\r\n */\r\n identity(): this {\r\n return this.set(0, 0, 0, 1)\r\n }\r\n\r\n /**\r\n * Set from Euler angles (radians) with an order tag.\r\n * @param euler - Euler angles (radians) with an order tag.\r\n * @returns this\r\n */\r\n setFromEuler(euler: { x: number; y: number; z: number; order: string }): this {\r\n const x = euler.x\r\n const y = euler.y\r\n const z = euler.z\r\n const order = euler.order\r\n const cos = Math.cos\r\n const sin = Math.sin\r\n const c1 = cos(x / 2)\r\n const c2 = cos(y / 2)\r\n const c3 = cos(z / 2)\r\n const s1 = sin(x / 2)\r\n const s2 = sin(y / 2)\r\n const s3 = sin(z / 2)\r\n\r\n switch (order) {\r\n case 'XYZ':\r\n this.x = s1 * c2 * c3 + c1 * s2 * s3\r\n this.y = c1 * s2 * c3 - s1 * c2 * s3\r\n this.z = c1 * c2 * s3 + s1 * s2 * c3\r\n this.w = c1 * c2 * c3 - s1 * s2 * s3\r\n break\r\n case 'YXZ':\r\n this.x = s1 * c2 * c3 + c1 * s2 * s3\r\n this.y = c1 * s2 * c3 - s1 * c2 * s3\r\n this.z = c1 * c2 * s3 - s1 * s2 * c3\r\n this.w = c1 * c2 * c3 + s1 * s2 * s3\r\n break\r\n case 'ZXY':\r\n this.x = s1 * c2 * c3 - c1 * s2 * s3\r\n this.y = c1 * s2 * c3 + s1 * c2 * s3\r\n this.z = c1 * c2 * s3 + s1 * s2 * c3\r\n this.w = c1 * c2 * c3 - s1 * s2 * s3\r\n break\r\n case 'ZYX':\r\n this.x = s1 * c2 * c3 - c1 * s2 * s3\r\n this.y = c1 * s2 * c3 + s1 * c2 * s3\r\n this.z = c1 * c2 * s3 - s1 * s2 * c3\r\n this.w = c1 * c2 * c3 + s1 * s2 * s3\r\n break\r\n case 'YZX':\r\n this.x = s1 * c2 * c3 + c1 * s2 * s3\r\n this.y = c1 * s2 * c3 + s1 * c2 * s3\r\n this.z = c1 * c2 * s3 - s1 * s2 * c3\r\n this.w = c1 * c2 * c3 - s1 * s2 * s3\r\n break\r\n case 'XZY':\r\n this.x = s1 * c2 * c3 - c1 * s2 * s3\r\n this.y = c1 * s2 * c3 - s1 * c2 * s3\r\n this.z = c1 * c2 * s3 + s1 * s2 * c3\r\n this.w = c1 * c2 * c3 + s1 * s2 * s3\r\n break\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Set from an axis and an angle (radians).\r\n * @param axis - rotation axis (unit length assumed).\r\n * @param angle - rotation angle in radians.\r\n * @returns this\r\n */\r\n setFromAxisAngle(axis: Vec3, angle: number): this {\r\n const halfAngle = angle / 2\r\n const s = Math.sin(halfAngle)\r\n this.x = axis.x * s\r\n this.y = axis.y * s\r\n this.z = axis.z * s\r\n this.w = Math.cos(halfAngle)\r\n return this\r\n }\r\n\r\n /**\r\n * Set from a rotation matrix.\r\n * @param m - matrix whose upper 3x3 is a pure rotation (column-major elements).\r\n * @returns this\r\n */\r\n setFromRotationMatrix(m: { elements: number[] }): this {\r\n const te = m.elements\r\n const m11 = te[0]\r\n const m12 = te[4]\r\n const m13 = te[8]\r\n const m21 = te[1]\r\n const m22 = te[5]\r\n const m23 = te[9]\r\n const m31 = te[2]\r\n const m32 = te[6]\r\n const m33 = te[10]\r\n const trace = m11 + m22 + m33\r\n\r\n if (trace > 0) {\r\n const s = 0.5 / Math.sqrt(trace + 1.0)\r\n this.w = 0.25 / s\r\n this.x = (m32 - m23) * s\r\n this.y = (m13 - m31) * s\r\n this.z = (m21 - m12) * s\r\n } else if (m11 > m22 && m11 > m33) {\r\n const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33)\r\n this.w = (m32 - m23) / s\r\n this.x = 0.25 * s\r\n this.y = (m12 + m21) / s\r\n this.z = (m13 + m31) / s\r\n } else if (m22 > m33) {\r\n const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33)\r\n this.w = (m13 - m31) / s\r\n this.x = (m12 + m21) / s\r\n this.y = 0.25 * s\r\n this.z = (m23 + m32) / s\r\n } else {\r\n const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22)\r\n this.w = (m21 - m12) / s\r\n this.x = (m13 + m31) / s\r\n this.y = (m23 + m32) / s\r\n this.z = 0.25 * s\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Set to the rotation from unit vector v1 to v2.\r\n * @param vFrom - source direction (unit length assumed).\r\n * @param vTo - target direction (unit length assumed).\r\n * @returns this\r\n */\r\n setFromUnitVectors(vFrom: Vec3, vTo: Vec3): this {\r\n let r = vFrom.dot(vTo) + 1\r\n if (r < Number.EPSILON) {\r\n r = 0\r\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\r\n this.x = -vFrom.y\r\n this.y = vFrom.x\r\n this.z = 0\r\n this.w = r\r\n } else {\r\n this.x = 0\r\n this.y = -vFrom.z\r\n this.z = vFrom.y\r\n this.w = r\r\n }\r\n } else {\r\n this.x = vFrom.y * vTo.z - vFrom.z * vTo.y\r\n this.y = vFrom.z * vTo.x - vFrom.x * vTo.z\r\n this.z = vFrom.x * vTo.y - vFrom.y * vTo.x\r\n this.w = r\r\n }\r\n return this.normalize()\r\n }\r\n\r\n /**\r\n * Multiply by another quaternion (this = this * q).\r\n * @param q - right operand.\r\n * @returns this\r\n */\r\n multiply(q: Quat): this {\r\n return this.multiplyQuaternions(this, q)\r\n }\r\n\r\n /**\r\n * Pre-multiply by another quaternion (this = q * this).\r\n * @param q - left operand.\r\n * @returns this\r\n */\r\n premultiply(q: Quat): this {\r\n return this.multiplyQuaternions(q, this)\r\n }\r\n\r\n /**\r\n * Set this to a * b.\r\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n multiplyQuaternions(a: Quat, b: Quat): this {\r\n const qax = a.x\r\n const qay = a.y\r\n const qaz = a.z\r\n const qaw = a.w\r\n const qbx = b.x\r\n const qby = b.y\r\n const qbz = b.z\r\n const qbw = b.w\r\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby\r\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz\r\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx\r\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz\r\n return this\r\n }\r\n\r\n /**\r\n * Spherical-interpolate towards qb by t.\r\n * @param qb - target quaternion.\r\n * @param t - interpolation factor.\r\n * @returns this\r\n */\r\n slerp(qb: Quat, t: number): this {\r\n if (t === 0) return this\r\n if (t === 1) return this.copy(qb)\r\n const x = this.x\r\n const y = this.y\r\n const z = this.z\r\n const w = this.w\r\n let cosHalfTheta = w * qb.w + x * qb.x + y * qb.y + z * qb.z\r\n if (cosHalfTheta < 0) {\r\n this.w = -qb.w\r\n this.x = -qb.x\r\n this.y = -qb.y\r\n this.z = -qb.z\r\n cosHalfTheta = -cosHalfTheta\r\n } else {\r\n this.copy(qb)\r\n }\r\n if (cosHalfTheta >= 1.0) {\r\n this.w = w\r\n this.x = x\r\n this.y = y\r\n this.z = z\r\n return this\r\n }\r\n const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta\r\n if (sqrSinHalfTheta <= Number.EPSILON) {\r\n const s = 1 - t\r\n this.w = s * w + t * this.w\r\n this.x = s * x + t * this.x\r\n this.y = s * y + t * this.y\r\n this.z = s * z + t * this.z\r\n this.normalize()\r\n return this\r\n }\r\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta)\r\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta)\r\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta\r\n const ratioB = Math.sin(t * halfTheta) / sinHalfTheta\r\n this.w = w * ratioA + this.w * ratioB\r\n this.x = x * ratioA + this.x * ratioB\r\n this.y = y * ratioA + this.y * ratioB\r\n this.z = z * ratioA + this.z * ratioB\r\n return this\r\n }\r\n\r\n /**\r\n * Return the dot product with another quaternion.\r\n * @param q - quaternion to compare with.\r\n * @returns the dot product.\r\n */\r\n dot(q: Quat): number {\r\n return this.x * q.x + this.y * q.y + this.z * q.z + this.w * q.w\r\n }\r\n\r\n /**\r\n * Return the 4D length.\r\n * @returns the quaternion length.\r\n */\r\n length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w)\r\n }\r\n\r\n /**\r\n * Scale to unit length (zero-length stays zero).\r\n * @returns this\r\n */\r\n normalize(): this {\r\n let l = this.length()\r\n if (l === 0) {\r\n this.x = 0\r\n this.y = 0\r\n this.z = 0\r\n this.w = 1\r\n } else {\r\n l = 1 / l\r\n this.x = this.x * l\r\n this.y = this.y * l\r\n this.z = this.z * l\r\n this.w = this.w * l\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Invert in place (conjugate for unit quaternions).\r\n * @returns this (assumes unit length)\r\n */\r\n invert(): this {\r\n return this.conjugate()\r\n }\r\n\r\n /**\r\n * Conjugate in place (negate x, y, z).\r\n * @returns this\r\n */\r\n conjugate(): this {\r\n this.x *= -1\r\n this.y *= -1\r\n this.z *= -1\r\n return this\r\n }\r\n\r\n /**\r\n * Return the angle (radians) to another quaternion.\r\n * @param q - quaternion to compare with.\r\n * @returns the angle in radians.\r\n */\r\n angleTo(q: Quat): number {\r\n return 2 * Math.acos(Math.abs(Math.max(-1, Math.min(1, this.dot(q)))))\r\n }\r\n\r\n /**\r\n * Write the components into an array.\r\n * @param array - target array (created when omitted).\r\n * @param offset - start offset.\r\n * @returns the target array.\r\n */\r\n toArray(array: number[] = [], offset = 0): number[] {\r\n array[offset] = this.x\r\n array[offset + 1] = this.y\r\n array[offset + 2] = this.z\r\n array[offset + 3] = this.w\r\n return array\r\n }\r\n\r\n /**\r\n * Load the components from an array-like.\r\n * @param array - source array.\r\n * @param offset - start offset.\r\n * @returns this\r\n */\r\n fromArray(array: ArrayLike<number>, offset = 0): this {\r\n this.x = array[offset]\r\n this.y = array[offset + 1]\r\n this.z = array[offset + 2]\r\n this.w = array[offset + 3]\r\n return this\r\n }\r\n\r\n /**\r\n * Return true when all components are exactly equal.\r\n * @param q - quaternion to compare with.\r\n * @returns true when all components are strictly equal.\r\n */\r\n equals(q: Quat): boolean {\r\n return q.x === this.x && q.y === this.y && q.z === this.z && q.w === this.w\r\n }\r\n}"]}
1
+ {"version":3,"file":"Quat.js","sourceRoot":"","sources":["../../src/math3d/Quat.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * math3d/Quat — three.js r162 `Quaternion` 的算法子集移植。\n *\n * Ported from three.js r162 `src/math/Quaternion.js` (MIT License, © 2010-2024\n * three.js authors). 公式与运算顺序逐行照抄以保证逐位一致;`_onChange`\n * 回调机制(three 的渲染用)未移植——本类只做数学。\n */\n\nimport type { Vec3 } from './Vec3'\n\n/** Quaternion (x, y, z, w), three.js `Quaternion` subset. */\nexport class Quat {\n /** X component. */\n x: number\n /** Y component. */\n y: number\n /** Z component. */\n z: number\n /** W (scalar) component. */\n w: number\n\n /**\n * @param x - X component.\n * @param y - Y component.\n * @param z - Z component.\n * @param w - W (scalar) component.\n */\n constructor(x = 0, y = 0, z = 0, w = 1) {\n this.x = x\n this.y = y\n this.z = z\n this.w = w\n }\n\n /**\n * Set the component values.\n * @param x - X component.\n * @param y - Y component.\n * @param z - Z component.\n * @param w - W (scalar) component.\n * @returns this\n */\n set(x: number, y: number, z: number, w: number): this {\n this.x = x\n this.y = y\n this.z = z\n this.w = w\n return this\n }\n\n /**\n * Copy the components from another quaternion.\n * @param q - source quaternion.\n * @returns this\n */\n copy(q: Quat): this {\n this.x = q.x\n this.y = q.y\n this.z = q.z\n this.w = q.w\n return this\n }\n\n /**\n * Return a new quaternion with the same components.\n * @returns a new quaternion with the same components.\n */\n clone(): Quat {\n return new Quat(this.x, this.y, this.z, this.w)\n }\n\n /**\n * Set to the identity quaternion.\n * @returns this (identity quaternion)\n */\n identity(): this {\n return this.set(0, 0, 0, 1)\n }\n\n /**\n * Set from Euler angles (radians) with an order tag.\n * @param euler - Euler angles (radians) with an order tag.\n * @returns this\n */\n setFromEuler(euler: { x: number; y: number; z: number; order: string }): this {\n const x = euler.x\n const y = euler.y\n const z = euler.z\n const order = euler.order\n const cos = Math.cos\n const sin = Math.sin\n const c1 = cos(x / 2)\n const c2 = cos(y / 2)\n const c3 = cos(z / 2)\n const s1 = sin(x / 2)\n const s2 = sin(y / 2)\n const s3 = sin(z / 2)\n\n switch (order) {\n case 'XYZ':\n this.x = s1 * c2 * c3 + c1 * s2 * s3\n this.y = c1 * s2 * c3 - s1 * c2 * s3\n this.z = c1 * c2 * s3 + s1 * s2 * c3\n this.w = c1 * c2 * c3 - s1 * s2 * s3\n break\n case 'YXZ':\n this.x = s1 * c2 * c3 + c1 * s2 * s3\n this.y = c1 * s2 * c3 - s1 * c2 * s3\n this.z = c1 * c2 * s3 - s1 * s2 * c3\n this.w = c1 * c2 * c3 + s1 * s2 * s3\n break\n case 'ZXY':\n this.x = s1 * c2 * c3 - c1 * s2 * s3\n this.y = c1 * s2 * c3 + s1 * c2 * s3\n this.z = c1 * c2 * s3 + s1 * s2 * c3\n this.w = c1 * c2 * c3 - s1 * s2 * s3\n break\n case 'ZYX':\n this.x = s1 * c2 * c3 - c1 * s2 * s3\n this.y = c1 * s2 * c3 + s1 * c2 * s3\n this.z = c1 * c2 * s3 - s1 * s2 * c3\n this.w = c1 * c2 * c3 + s1 * s2 * s3\n break\n case 'YZX':\n this.x = s1 * c2 * c3 + c1 * s2 * s3\n this.y = c1 * s2 * c3 + s1 * c2 * s3\n this.z = c1 * c2 * s3 - s1 * s2 * c3\n this.w = c1 * c2 * c3 - s1 * s2 * s3\n break\n case 'XZY':\n this.x = s1 * c2 * c3 - c1 * s2 * s3\n this.y = c1 * s2 * c3 - s1 * c2 * s3\n this.z = c1 * c2 * s3 + s1 * s2 * c3\n this.w = c1 * c2 * c3 + s1 * s2 * s3\n break\n }\n return this\n }\n\n /**\n * Set from an axis and an angle (radians).\n * @param axis - rotation axis (unit length assumed).\n * @param angle - rotation angle in radians.\n * @returns this\n */\n setFromAxisAngle(axis: Vec3, angle: number): this {\n const halfAngle = angle / 2\n const s = Math.sin(halfAngle)\n this.x = axis.x * s\n this.y = axis.y * s\n this.z = axis.z * s\n this.w = Math.cos(halfAngle)\n return this\n }\n\n /**\n * Set from a rotation matrix.\n * @param m - matrix whose upper 3x3 is a pure rotation (column-major elements).\n * @returns this\n */\n setFromRotationMatrix(m: { elements: number[] }): this {\n const te = m.elements\n const m11 = te[0]\n const m12 = te[4]\n const m13 = te[8]\n const m21 = te[1]\n const m22 = te[5]\n const m23 = te[9]\n const m31 = te[2]\n const m32 = te[6]\n const m33 = te[10]\n const trace = m11 + m22 + m33\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1.0)\n this.w = 0.25 / s\n this.x = (m32 - m23) * s\n this.y = (m13 - m31) * s\n this.z = (m21 - m12) * s\n } else if (m11 > m22 && m11 > m33) {\n const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33)\n this.w = (m32 - m23) / s\n this.x = 0.25 * s\n this.y = (m12 + m21) / s\n this.z = (m13 + m31) / s\n } else if (m22 > m33) {\n const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33)\n this.w = (m13 - m31) / s\n this.x = (m12 + m21) / s\n this.y = 0.25 * s\n this.z = (m23 + m32) / s\n } else {\n const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22)\n this.w = (m21 - m12) / s\n this.x = (m13 + m31) / s\n this.y = (m23 + m32) / s\n this.z = 0.25 * s\n }\n return this\n }\n\n /**\n * Set to the rotation from unit vector v1 to v2.\n * @param vFrom - source direction (unit length assumed).\n * @param vTo - target direction (unit length assumed).\n * @returns this\n */\n setFromUnitVectors(vFrom: Vec3, vTo: Vec3): this {\n let r = vFrom.dot(vTo) + 1\n if (r < Number.EPSILON) {\n r = 0\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this.x = -vFrom.y\n this.y = vFrom.x\n this.z = 0\n this.w = r\n } else {\n this.x = 0\n this.y = -vFrom.z\n this.z = vFrom.y\n this.w = r\n }\n } else {\n this.x = vFrom.y * vTo.z - vFrom.z * vTo.y\n this.y = vFrom.z * vTo.x - vFrom.x * vTo.z\n this.z = vFrom.x * vTo.y - vFrom.y * vTo.x\n this.w = r\n }\n return this.normalize()\n }\n\n /**\n * Multiply by another quaternion (this = this * q).\n * @param q - right operand.\n * @returns this\n */\n multiply(q: Quat): this {\n return this.multiplyQuaternions(this, q)\n }\n\n /**\n * Pre-multiply by another quaternion (this = q * this).\n * @param q - left operand.\n * @returns this\n */\n premultiply(q: Quat): this {\n return this.multiplyQuaternions(q, this)\n }\n\n /**\n * Set this to a * b.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n multiplyQuaternions(a: Quat, b: Quat): this {\n const qax = a.x\n const qay = a.y\n const qaz = a.z\n const qaw = a.w\n const qbx = b.x\n const qby = b.y\n const qbz = b.z\n const qbw = b.w\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz\n return this\n }\n\n /**\n * Spherical-interpolate towards qb by t.\n * @param qb - target quaternion.\n * @param t - interpolation factor.\n * @returns this\n */\n slerp(qb: Quat, t: number): this {\n if (t === 0) return this\n if (t === 1) return this.copy(qb)\n const x = this.x\n const y = this.y\n const z = this.z\n const w = this.w\n let cosHalfTheta = w * qb.w + x * qb.x + y * qb.y + z * qb.z\n if (cosHalfTheta < 0) {\n this.w = -qb.w\n this.x = -qb.x\n this.y = -qb.y\n this.z = -qb.z\n cosHalfTheta = -cosHalfTheta\n } else {\n this.copy(qb)\n }\n if (cosHalfTheta >= 1.0) {\n this.w = w\n this.x = x\n this.y = y\n this.z = z\n return this\n }\n const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta\n if (sqrSinHalfTheta <= Number.EPSILON) {\n const s = 1 - t\n this.w = s * w + t * this.w\n this.x = s * x + t * this.x\n this.y = s * y + t * this.y\n this.z = s * z + t * this.z\n this.normalize()\n return this\n }\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta)\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta)\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta\n const ratioB = Math.sin(t * halfTheta) / sinHalfTheta\n this.w = w * ratioA + this.w * ratioB\n this.x = x * ratioA + this.x * ratioB\n this.y = y * ratioA + this.y * ratioB\n this.z = z * ratioA + this.z * ratioB\n return this\n }\n\n /**\n * Return the dot product with another quaternion.\n * @param q - quaternion to compare with.\n * @returns the dot product.\n */\n dot(q: Quat): number {\n return this.x * q.x + this.y * q.y + this.z * q.z + this.w * q.w\n }\n\n /**\n * Return the 4D length.\n * @returns the quaternion length.\n */\n length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w)\n }\n\n /**\n * Scale to unit length (zero-length stays zero).\n * @returns this\n */\n normalize(): this {\n let l = this.length()\n if (l === 0) {\n this.x = 0\n this.y = 0\n this.z = 0\n this.w = 1\n } else {\n l = 1 / l\n this.x = this.x * l\n this.y = this.y * l\n this.z = this.z * l\n this.w = this.w * l\n }\n return this\n }\n\n /**\n * Invert in place (conjugate for unit quaternions).\n * @returns this (assumes unit length)\n */\n invert(): this {\n return this.conjugate()\n }\n\n /**\n * Conjugate in place (negate x, y, z).\n * @returns this\n */\n conjugate(): this {\n this.x *= -1\n this.y *= -1\n this.z *= -1\n return this\n }\n\n /**\n * Return the angle (radians) to another quaternion.\n * @param q - quaternion to compare with.\n * @returns the angle in radians.\n */\n angleTo(q: Quat): number {\n return 2 * Math.acos(Math.abs(Math.max(-1, Math.min(1, this.dot(q)))))\n }\n\n /**\n * Write the components into an array.\n * @param array - target array (created when omitted).\n * @param offset - start offset.\n * @returns the target array.\n */\n toArray(array: number[] = [], offset = 0): number[] {\n array[offset] = this.x\n array[offset + 1] = this.y\n array[offset + 2] = this.z\n array[offset + 3] = this.w\n return array\n }\n\n /**\n * Load the components from an array-like.\n * @param array - source array.\n * @param offset - start offset.\n * @returns this\n */\n fromArray(array: ArrayLike<number>, offset = 0): this {\n this.x = array[offset]\n this.y = array[offset + 1]\n this.z = array[offset + 2]\n this.w = array[offset + 3]\n return this\n }\n\n /**\n * Return true when all components are exactly equal.\n * @param q - quaternion to compare with.\n * @returns true when all components are strictly equal.\n */\n equals(q: Quat): boolean {\n return q.x === this.x && q.y === this.y && q.z === this.z && q.w === this.w\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Vec2.js","sourceRoot":"","sources":["../../src/math3d/Vec2.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * math3d/Vec2 — three.js r162 `Vector2` 的算法子集移植。\r\n *\r\n * Ported from three.js r162 `src/math/Vector2.js` (MIT License, © 2010-2024\r\n * three.js authors). 公式与运算顺序逐行照抄以保证逐位一致。\r\n */\r\n\r\n/** 2D point/vector (mutable), three.js `Vector2` subset. */\r\nexport class Vec2 {\r\n /** three 内部标记(与 Vector2 一致)。 */\r\n readonly isVector2 = true\r\n\r\n /** X component. */\n x: number\r\n /** Y component. */\n y: number\r\n\r\n /**\r\n * @param x - X component.\r\n * @param y - Y component.\r\n */\r\n constructor(x = 0, y = 0) {\r\n this.x = x\r\n this.y = y\r\n }\r\n\r\n /**\r\n * Set the component values.\n * @param x - X component.\r\n * @param y - Y component.\r\n * @returns this\r\n */\r\n set(x: number, y: number): this {\r\n this.x = x\r\n this.y = y\r\n return this\r\n }\r\n\r\n /**\r\n * Copy the components from another vector.\n * @param v - source vector.\r\n * @returns this\r\n */\r\n copy(v: Vec2): this {\r\n this.x = v.x\r\n this.y = v.y\r\n return this\r\n }\r\n\r\n /**\r\n * Return a new vector with the same components.\n * @returns a new vector with the same components.\r\n */\r\n clone(): Vec2 {\r\n return new Vec2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * Add a vector component-wise.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n add(v: Vec2): this {\r\n this.x += v.x\r\n this.y += v.y\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to a + b, component-wise.\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n addVectors(a: Vec2, b: Vec2): this {\r\n this.x = a.x + b.x\r\n this.y = a.y + b.y\r\n return this\r\n }\r\n\r\n /**\r\n * Add v scaled by s, component-wise.\n * @param v - source vector.\r\n * @param s - scalar.\r\n * @returns this\r\n */\r\n addScaledVector(v: Vec2, s: number): this {\r\n this.x += v.x * s\r\n this.y += v.y * s\r\n return this\r\n }\r\n\r\n /**\r\n * Subtract a vector component-wise.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n sub(v: Vec2): this {\r\n this.x -= v.x\r\n this.y -= v.y\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to a - b, component-wise.\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n subVectors(a: Vec2, b: Vec2): this {\r\n this.x = a.x - b.x\r\n this.y = a.y - b.y\r\n return this\r\n }\r\n\r\n /**\r\n * Multiply component-wise by a vector.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n multiply(v: Vec2): this {\r\n this.x *= v.x\r\n this.y *= v.y\r\n return this\r\n }\r\n\r\n /**\r\n * Multiply every component by a scalar.\n * @param scalar - scalar factor.\r\n * @returns this\r\n */\r\n multiplyScalar(scalar: number): this {\r\n this.x *= scalar\r\n this.y *= scalar\r\n return this\r\n }\r\n\r\n /**\r\n * Divide component-wise by a vector.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n divide(v: Vec2): this {\r\n this.x /= v.x\r\n this.y /= v.y\r\n return this\r\n }\r\n\r\n /**\r\n * Divide every component by a scalar.\n * @param scalar - scalar divisor.\r\n * @returns this\r\n */\r\n divideScalar(scalar: number): this {\r\n return this.multiplyScalar(1 / scalar)\r\n }\r\n\r\n /**\r\n * Negate every component.\n * @returns this\r\n */\r\n negate(): this {\r\n this.x = -this.x\r\n this.y = -this.y\r\n return this\r\n }\r\n\r\n /**\r\n * Return the dot product with another vector.\n * @param v - right operand.\r\n * @returns the dot product.\r\n */\r\n dot(v: Vec2): number {\r\n return this.x * v.x + this.y * v.y\r\n }\r\n\r\n /**\r\n * Return the 2D cross (z of a × b).\n * @param v - right operand.\r\n * @returns the 2D cross product (scalar).\r\n */\r\n cross(v: Vec2): number {\r\n return this.x * v.y - this.y * v.x\r\n }\r\n\r\n /**\r\n * Return the squared length.\n * @returns the squared length.\r\n */\r\n lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * Return the Euclidean length.\n * @returns the Euclidean length.\r\n */\r\n length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * Scale to unit length (zero-length stays zero).\n * @returns this\r\n */\r\n normalize(): this {\r\n return this.divideScalar(this.length() || 1)\r\n }\r\n\r\n /**\r\n * Scale to the given length.\n * @param length - target length.\r\n * @returns this\r\n */\r\n setLength(length: number): this {\r\n return this.normalize().multiplyScalar(length)\r\n }\r\n\r\n /**\r\n * Return the Euclidean distance to another vector.\n * @param v - target vector.\r\n * @returns the distance.\r\n */\r\n distanceTo(v: Vec2): number {\r\n return Math.sqrt(this.distanceToSquared(v))\r\n }\r\n\r\n /**\r\n * Return the squared distance to another vector.\n * @param v - target vector.\r\n * @returns the squared distance.\r\n */\r\n distanceToSquared(v: Vec2): number {\r\n const dx = this.x - v.x\r\n const dy = this.y - v.y\r\n return dx * dx + dy * dy\r\n }\r\n\r\n /**\r\n * Interpolate towards v by t in [0, 1].\n * @param v - target vector.\r\n * @param alpha - interpolation factor.\r\n * @returns this\r\n */\r\n lerp(v: Vec2, alpha: number): this {\r\n this.x += (v.x - this.x) * alpha\r\n this.y += (v.y - this.y) * alpha\r\n return this\r\n }\r\n\r\n /**\r\n * Clamp each component to the per-component minimum with v.\n * @param v - target vector (component-wise minimum).\r\n * @returns this\r\n */\r\n min(v: Vec2): this {\r\n this.x = Math.min(this.x, v.x)\r\n this.y = Math.min(this.y, v.y)\r\n return this\r\n }\r\n\r\n /**\r\n * Clamp each component to the per-component maximum with v.\n * @param v - target vector (component-wise maximum).\r\n * @returns this\r\n */\r\n max(v: Vec2): this {\r\n this.x = Math.max(this.x, v.x)\r\n this.y = Math.max(this.y, v.y)\r\n return this\r\n }\r\n\r\n /**\r\n * Load the components from an array-like.\n * @param array - source array.\r\n * @param offset - start offset.\r\n * @returns this\r\n */\r\n fromArray(array: ArrayLike<number>, offset = 0): this {\r\n this.x = array[offset]\r\n this.y = array[offset + 1]\r\n return this\r\n }\r\n\r\n /**\r\n * Write the components into an array.\n * @param array - target array (created when omitted).\r\n * @param offset - start offset.\r\n * @returns the target array.\r\n */\r\n toArray(array: number[] = [], offset = 0): number[] {\r\n array[offset] = this.x\r\n array[offset + 1] = this.y\r\n return array\r\n }\r\n\r\n /**\r\n * Return true when all components are exactly equal.\n * @param v - vector to compare with.\r\n * @returns true when all components are strictly equal.\r\n */\r\n equals(v: Vec2): boolean {\r\n return v.x === this.x && v.y === this.y\r\n }\r\n}"]}
1
+ {"version":3,"file":"Vec2.js","sourceRoot":"","sources":["../../src/math3d/Vec2.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * math3d/Vec2 — three.js r162 `Vector2` 的算法子集移植。\n *\n * Ported from three.js r162 `src/math/Vector2.js` (MIT License, © 2010-2024\n * three.js authors). 公式与运算顺序逐行照抄以保证逐位一致。\n */\n\n/** 2D point/vector (mutable), three.js `Vector2` subset. */\nexport class Vec2 {\n /** three 内部标记(与 Vector2 一致)。 */\n readonly isVector2 = true\n\n /** X component. */\n x: number\n /** Y component. */\n y: number\n\n /**\n * @param x - X component.\n * @param y - Y component.\n */\n constructor(x = 0, y = 0) {\n this.x = x\n this.y = y\n }\n\n /**\n * Set the component values.\n * @param x - X component.\n * @param y - Y component.\n * @returns this\n */\n set(x: number, y: number): this {\n this.x = x\n this.y = y\n return this\n }\n\n /**\n * Copy the components from another vector.\n * @param v - source vector.\n * @returns this\n */\n copy(v: Vec2): this {\n this.x = v.x\n this.y = v.y\n return this\n }\n\n /**\n * Return a new vector with the same components.\n * @returns a new vector with the same components.\n */\n clone(): Vec2 {\n return new Vec2(this.x, this.y)\n }\n\n /**\n * Add a vector component-wise.\n * @param v - right operand.\n * @returns this\n */\n add(v: Vec2): this {\n this.x += v.x\n this.y += v.y\n return this\n }\n\n /**\n * Set this to a + b, component-wise.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n addVectors(a: Vec2, b: Vec2): this {\n this.x = a.x + b.x\n this.y = a.y + b.y\n return this\n }\n\n /**\n * Add v scaled by s, component-wise.\n * @param v - source vector.\n * @param s - scalar.\n * @returns this\n */\n addScaledVector(v: Vec2, s: number): this {\n this.x += v.x * s\n this.y += v.y * s\n return this\n }\n\n /**\n * Subtract a vector component-wise.\n * @param v - right operand.\n * @returns this\n */\n sub(v: Vec2): this {\n this.x -= v.x\n this.y -= v.y\n return this\n }\n\n /**\n * Set this to a - b, component-wise.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n subVectors(a: Vec2, b: Vec2): this {\n this.x = a.x - b.x\n this.y = a.y - b.y\n return this\n }\n\n /**\n * Multiply component-wise by a vector.\n * @param v - right operand.\n * @returns this\n */\n multiply(v: Vec2): this {\n this.x *= v.x\n this.y *= v.y\n return this\n }\n\n /**\n * Multiply every component by a scalar.\n * @param scalar - scalar factor.\n * @returns this\n */\n multiplyScalar(scalar: number): this {\n this.x *= scalar\n this.y *= scalar\n return this\n }\n\n /**\n * Divide component-wise by a vector.\n * @param v - right operand.\n * @returns this\n */\n divide(v: Vec2): this {\n this.x /= v.x\n this.y /= v.y\n return this\n }\n\n /**\n * Divide every component by a scalar.\n * @param scalar - scalar divisor.\n * @returns this\n */\n divideScalar(scalar: number): this {\n return this.multiplyScalar(1 / scalar)\n }\n\n /**\n * Negate every component.\n * @returns this\n */\n negate(): this {\n this.x = -this.x\n this.y = -this.y\n return this\n }\n\n /**\n * Return the dot product with another vector.\n * @param v - right operand.\n * @returns the dot product.\n */\n dot(v: Vec2): number {\n return this.x * v.x + this.y * v.y\n }\n\n /**\n * Return the 2D cross (z of a × b).\n * @param v - right operand.\n * @returns the 2D cross product (scalar).\n */\n cross(v: Vec2): number {\n return this.x * v.y - this.y * v.x\n }\n\n /**\n * Return the squared length.\n * @returns the squared length.\n */\n lengthSq(): number {\n return this.x * this.x + this.y * this.y\n }\n\n /**\n * Return the Euclidean length.\n * @returns the Euclidean length.\n */\n length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y)\n }\n\n /**\n * Scale to unit length (zero-length stays zero).\n * @returns this\n */\n normalize(): this {\n return this.divideScalar(this.length() || 1)\n }\n\n /**\n * Scale to the given length.\n * @param length - target length.\n * @returns this\n */\n setLength(length: number): this {\n return this.normalize().multiplyScalar(length)\n }\n\n /**\n * Return the Euclidean distance to another vector.\n * @param v - target vector.\n * @returns the distance.\n */\n distanceTo(v: Vec2): number {\n return Math.sqrt(this.distanceToSquared(v))\n }\n\n /**\n * Return the squared distance to another vector.\n * @param v - target vector.\n * @returns the squared distance.\n */\n distanceToSquared(v: Vec2): number {\n const dx = this.x - v.x\n const dy = this.y - v.y\n return dx * dx + dy * dy\n }\n\n /**\n * Interpolate towards v by t in [0, 1].\n * @param v - target vector.\n * @param alpha - interpolation factor.\n * @returns this\n */\n lerp(v: Vec2, alpha: number): this {\n this.x += (v.x - this.x) * alpha\n this.y += (v.y - this.y) * alpha\n return this\n }\n\n /**\n * Clamp each component to the per-component minimum with v.\n * @param v - target vector (component-wise minimum).\n * @returns this\n */\n min(v: Vec2): this {\n this.x = Math.min(this.x, v.x)\n this.y = Math.min(this.y, v.y)\n return this\n }\n\n /**\n * Clamp each component to the per-component maximum with v.\n * @param v - target vector (component-wise maximum).\n * @returns this\n */\n max(v: Vec2): this {\n this.x = Math.max(this.x, v.x)\n this.y = Math.max(this.y, v.y)\n return this\n }\n\n /**\n * Load the components from an array-like.\n * @param array - source array.\n * @param offset - start offset.\n * @returns this\n */\n fromArray(array: ArrayLike<number>, offset = 0): this {\n this.x = array[offset]\n this.y = array[offset + 1]\n return this\n }\n\n /**\n * Write the components into an array.\n * @param array - target array (created when omitted).\n * @param offset - start offset.\n * @returns the target array.\n */\n toArray(array: number[] = [], offset = 0): number[] {\n array[offset] = this.x\n array[offset + 1] = this.y\n return array\n }\n\n /**\n * Return true when all components are exactly equal.\n * @param v - vector to compare with.\n * @returns true when all components are strictly equal.\n */\n equals(v: Vec2): boolean {\n return v.x === this.x && v.y === this.y\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Vec3.js","sourceRoot":"","sources":["../../src/math3d/Vec3.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * math3d/Vec3 — three.js r162 `Vector3` 的算法子集移植(可变类,与 three 逐位一致)。\r\n *\r\n * Ported from three.js r162 `src/math/Vector3.js` (MIT License, © 2010-2024\r\n * three.js authors). 仅保留 core/extra 实际使用的方法;公式与运算顺序逐行照抄,\r\n * 以保证与 three 的浮点结果逐位一致(parity 测试钉死)。**不得**顺手改写公式。\r\n *\r\n * 与 `api/geom-types/vecOps.ts`(compat 面 tuple 纯函数)职责分离:本类是 core\r\n * 内部 three 替换用的可变向量类,不是公开 API 面的一部分。\r\n */\r\n\r\nimport { Quat } from './Quat'\r\n\r\n/** 3D vector/point (mutable), three.js `Vector3` subset. */\r\nexport class Vec3 {\r\n /** three 内部标记,供 Matrix4.setPosition / makeTranslation 的向量参数判定。 */\r\n readonly isVector3 = true\r\n\r\n /** X component. */\n x: number\r\n /** Y component. */\n y: number\r\n /** Z component. */\n z: number\r\n\r\n /**\r\n * @param x - X component.\r\n * @param y - Y component.\r\n * @param z - Z component.\r\n */\r\n constructor(x = 0, y = 0, z = 0) {\r\n this.x = x\r\n this.y = y\r\n this.z = z\r\n }\r\n\r\n /**\r\n * Set the component values.\n * @param x - X component.\r\n * @param y - Y component.\r\n * @param z - Z component (kept when omitted, matching three's sprite.scale.set).\r\n * @returns this\r\n */\r\n set(x: number, y: number, z?: number): this {\r\n if (z === undefined) z = this.z\r\n this.x = x\r\n this.y = y\r\n this.z = z\r\n return this\r\n }\r\n\r\n /**\r\n * Set all components to the same scalar.\n * @param scalar - value for all components.\r\n * @returns this\r\n */\r\n setScalar(scalar: number): this {\r\n this.x = scalar\r\n this.y = scalar\r\n this.z = scalar\r\n return this\r\n }\r\n\r\n /**\r\n * Set the X component.\n * @param x - X component.\r\n * @returns this\r\n */\r\n setX(x: number): this {\r\n this.x = x\r\n return this\r\n }\r\n\r\n /**\r\n * Set the Y component.\n * @param y - Y component.\r\n * @returns this\r\n */\r\n setY(y: number): this {\r\n this.y = y\r\n return this\r\n }\r\n\r\n /**\r\n * Set the Z component.\n * @param z - Z component.\r\n * @returns this\r\n */\r\n setZ(z: number): this {\r\n this.z = z\r\n return this\r\n }\r\n\r\n /**\r\n * Return a new vector with the same components.\n * @returns a new vector with the same components.\r\n */\r\n clone(): Vec3 {\r\n return new Vec3(this.x, this.y, this.z)\r\n }\r\n\r\n /**\r\n * Copy the components from another vector.\n * @param v - source vector.\r\n * @returns this\r\n */\r\n copy(v: Vec3): this {\r\n this.x = v.x\r\n this.y = v.y\r\n this.z = v.z\r\n return this\r\n }\r\n\r\n /**\r\n * Add a vector component-wise.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n add(v: Vec3): this {\r\n this.x += v.x\r\n this.y += v.y\r\n this.z += v.z\r\n return this\r\n }\r\n\r\n /**\r\n * Add a scalar to every component.\n * @param s - scalar.\r\n * @returns this\r\n */\r\n addScalar(s: number): this {\r\n this.x += s\r\n this.y += s\r\n this.z += s\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to a + b, component-wise.\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n addVectors(a: Vec3, b: Vec3): this {\r\n this.x = a.x + b.x\r\n this.y = a.y + b.y\r\n this.z = a.z + b.z\r\n return this\r\n }\r\n\r\n /**\r\n * Add v scaled by s, component-wise.\n * @param v - source vector.\r\n * @param s - scalar.\r\n * @returns this\r\n */\r\n addScaledVector(v: Vec3, s: number): this {\r\n this.x += v.x * s\r\n this.y += v.y * s\r\n this.z += v.z * s\r\n return this\r\n }\r\n\r\n /**\r\n * Subtract a vector component-wise.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n sub(v: Vec3): this {\r\n this.x -= v.x\r\n this.y -= v.y\r\n this.z -= v.z\r\n return this\r\n }\r\n\r\n /**\r\n * Subtract a scalar from every component.\n * @param s - scalar.\r\n * @returns this\r\n */\r\n subScalar(s: number): this {\r\n this.x -= s\r\n this.y -= s\r\n this.z -= s\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to a - b, component-wise.\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n subVectors(a: Vec3, b: Vec3): this {\r\n this.x = a.x - b.x\r\n this.y = a.y - b.y\r\n this.z = a.z - b.z\r\n return this\r\n }\r\n\r\n /**\r\n * Multiply component-wise by a vector.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n multiply(v: Vec3): this {\r\n this.x *= v.x\r\n this.y *= v.y\r\n this.z *= v.z\r\n return this\r\n }\r\n\r\n /**\r\n * Multiply every component by a scalar.\n * @param scalar - scalar factor.\r\n * @returns this\r\n */\r\n multiplyScalar(scalar: number): this {\r\n this.x *= scalar\r\n this.y *= scalar\r\n this.z *= scalar\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to a * b, component-wise.\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n multiplyVectors(a: Vec3, b: Vec3): this {\r\n this.x = a.x * b.x\r\n this.y = a.y * b.y\r\n this.z = a.z * b.z\r\n return this\r\n }\r\n\r\n /**\r\n * Rotate the vector by Euler angles (radians).\n * @param euler - Euler angles (radians) with an order tag.\r\n * @returns this\r\n */\r\n applyEuler(euler: { x: number; y: number; z: number; order: string }): this {\r\n return this.applyQuaternion(new Quat().setFromEuler(euler))\r\n }\r\n\r\n /**\r\n * Rotate the vector around an axis by an angle (radians).\n * @param axis - rotation axis (unit length assumed).\r\n * @param angle - rotation angle in radians.\r\n * @returns this\r\n */\r\n applyAxisAngle(axis: Vec3, angle: number): this {\r\n return this.applyQuaternion(new Quat().setFromAxisAngle(axis, angle))\r\n }\r\n\r\n /**\r\n * Transform the vector by a 4x4 matrix (as a point).\n * @param m - affine 4x4 matrix (three column-major `elements` layout).\r\n * @returns this\r\n */\r\n applyMatrix4(m: { elements: number[] }): this {\r\n const x = this.x\r\n const y = this.y\r\n const z = this.z\r\n const e = m.elements\r\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15])\r\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w\r\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w\r\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w\r\n return this\r\n }\r\n\r\n /**\r\n * Rotate the vector by a quaternion.\n * @param q - unit quaternion.\r\n * @returns this\r\n */\r\n applyQuaternion(q: { x: number; y: number; z: number; w: number }): this {\r\n const vx = this.x\r\n const vy = this.y\r\n const vz = this.z\r\n const qx = q.x\r\n const qy = q.y\r\n const qz = q.z\r\n const qw = q.w\r\n const tx = 2 * (qy * vz - qz * vy)\r\n const ty = 2 * (qz * vx - qx * vz)\r\n const tz = 2 * (qx * vy - qy * vx)\r\n this.x = vx + qw * tx + qy * tz - qz * ty\r\n this.y = vy + qw * ty + qz * tx - qx * tz\r\n this.z = vz + qw * tz + qx * ty - qy * tx\r\n return this\r\n }\r\n\r\n /**\r\n * Divide component-wise by a vector.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n divide(v: Vec3): this {\r\n this.x /= v.x\r\n this.y /= v.y\r\n this.z /= v.z\r\n return this\r\n }\r\n\r\n /**\r\n * Divide every component by a scalar.\n * @param scalar - scalar divisor.\r\n * @returns this\r\n */\r\n divideScalar(scalar: number): this {\r\n return this.multiplyScalar(1 / scalar)\r\n }\r\n\r\n /**\r\n * Negate every component.\n * @returns this\r\n */\r\n negate(): this {\r\n this.x = -this.x\r\n this.y = -this.y\r\n this.z = -this.z\r\n return this\r\n }\r\n\r\n /**\r\n * Return the dot product with another vector.\n * @param v - right operand.\r\n * @returns the dot product.\r\n */\r\n dot(v: Vec3): number {\r\n return this.x * v.x + this.y * v.y + this.z * v.z\r\n }\r\n\r\n /**\r\n * Return the squared length.\n * @returns the squared length.\r\n */\r\n lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * Return the Euclidean length.\n * @returns the Euclidean length.\r\n */\r\n length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * Scale to unit length (zero-length stays zero).\n * @returns this\r\n */\r\n normalize(): this {\r\n return this.divideScalar(this.length() || 1)\r\n }\r\n\r\n /**\r\n * Scale to the given length.\n * @param length - target length.\r\n * @returns this\r\n */\r\n setLength(length: number): this {\r\n return this.normalize().multiplyScalar(length)\r\n }\r\n\r\n /**\r\n * Interpolate towards v by t in [0, 1].\n * @param v - target vector.\r\n * @param alpha - interpolation factor.\r\n * @returns this\r\n */\r\n lerp(v: Vec3, alpha: number): this {\r\n this.x += (v.x - this.x) * alpha\r\n this.y += (v.y - this.y) * alpha\r\n this.z += (v.z - this.z) * alpha\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to the linear interpolation of a and b.\n * @param v1 - start vector.\r\n * @param v2 - end vector.\r\n * @param alpha - interpolation factor.\r\n * @returns this\r\n */\r\n lerpVectors(v1: Vec3, v2: Vec3, alpha: number): this {\r\n this.x = v1.x + (v2.x - v1.x) * alpha\r\n this.y = v1.y + (v2.y - v1.y) * alpha\r\n this.z = v1.z + (v2.z - v1.z) * alpha\r\n return this\r\n }\r\n\r\n /**\r\n * Set this to the cross product with v.\n * @param v - right operand.\r\n * @returns this\r\n */\r\n cross(v: Vec3): this {\r\n return this.crossVectors(this, v)\r\n }\r\n\r\n /**\r\n * Set this to the cross product of a and b.\n * @param a - left operand.\r\n * @param b - right operand.\r\n * @returns this\r\n */\r\n crossVectors(a: Vec3, b: Vec3): this {\r\n const ax = a.x\r\n const ay = a.y\r\n const az = a.z\r\n const bx = b.x\r\n const by = b.y\r\n const bz = b.z\r\n this.x = ay * bz - az * by\r\n this.y = az * bx - ax * bz\r\n this.z = ax * by - ay * bx\r\n return this\r\n }\r\n\r\n /**\r\n * Return the Euclidean distance to another vector.\n * @param v - target vector.\r\n * @returns the distance.\r\n */\r\n distanceTo(v: Vec3): number {\r\n return Math.sqrt(this.distanceToSquared(v))\r\n }\r\n\r\n /**\r\n * Return the squared distance to another vector.\n * @param v - target vector.\r\n * @returns the squared distance.\r\n */\r\n distanceToSquared(v: Vec3): number {\r\n const dx = this.x - v.x\r\n const dy = this.y - v.y\r\n const dz = this.z - v.z\r\n return dx * dx + dy * dy + dz * dz\r\n }\r\n\r\n /**\r\n * Return the angle (radians) to another vector.\n * @param v - target vector.\r\n * @returns the unsigned angle in radians.\r\n */\r\n angleTo(v: Vec3): number {\r\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq())\r\n if (denominator === 0) return Math.PI / 2\r\n const theta = this.dot(v) / denominator\r\n return Math.acos(Math.max(-1, Math.min(1, theta)))\r\n }\r\n\r\n /**\r\n * Clamp each component to the per-component minimum with v.\n * @param v - target vector (component-wise minimum).\r\n * @returns this\r\n */\r\n min(v: Vec3): this {\r\n this.x = Math.min(this.x, v.x)\r\n this.y = Math.min(this.y, v.y)\r\n this.z = Math.min(this.z, v.z)\r\n return this\r\n }\r\n\r\n /**\r\n * Clamp each component to the per-component maximum with v.\n * @param v - target vector (component-wise maximum).\r\n * @returns this\r\n */\r\n max(v: Vec3): this {\r\n this.x = Math.max(this.x, v.x)\r\n this.y = Math.max(this.y, v.y)\r\n this.z = Math.max(this.z, v.z)\r\n return this\r\n }\r\n\r\n /**\r\n * Clamp every component into [min, max].\n * @param minVal - lower clamp bound.\r\n * @param maxVal - upper clamp bound.\r\n * @returns this\r\n */\r\n clampScalar(minVal: number, maxVal: number): this {\r\n this.x = Math.max(minVal, Math.min(maxVal, this.x))\r\n this.y = Math.max(minVal, Math.min(maxVal, this.y))\r\n this.z = Math.max(minVal, Math.min(maxVal, this.z))\r\n return this\r\n }\r\n\r\n /**\r\n * Set the components from the translation part of a matrix.\n * @param m - matrix (column-major `elements`).\r\n * @returns this\r\n */\r\n setFromMatrixPosition(m: { elements: number[] }): this {\r\n const e = m.elements\r\n this.x = e[12]\r\n this.y = e[13]\r\n this.z = e[14]\r\n return this\r\n }\r\n\r\n /**\r\n * Set the components from a matrix column.\n * @param m - matrix (column-major `elements`).\r\n * @param index - column index.\r\n * @returns this\r\n */\r\n setFromMatrixColumn(m: { elements: number[] }, index: number): this {\r\n return this.fromArray(m.elements, index * 4)\r\n }\r\n\r\n /**\r\n * Set the components from the scale part of a matrix.\n * @param m - matrix (column-major `elements`).\r\n * @returns the column lengths as (x, y, z) scale factors.\r\n */\r\n setFromMatrixScale(m: { elements: number[] }): this {\r\n const sx = this.setFromMatrixColumn(m, 0).length()\r\n const sy = this.setFromMatrixColumn(m, 1).length()\r\n const sz = this.setFromMatrixColumn(m, 2).length()\r\n this.x = sx\r\n this.y = sy\r\n this.z = sz\r\n return this\r\n }\r\n\r\n /**\r\n * Load the components from an array-like.\n * @param array - source array.\r\n * @param offset - start offset.\r\n * @returns this\r\n */\r\n fromArray(array: ArrayLike<number>, offset = 0): this {\r\n this.x = array[offset]\r\n this.y = array[offset + 1]\r\n this.z = array[offset + 2]\r\n return this\r\n }\r\n\r\n /**\r\n * Write the components into an array.\n * @param array - target array (created when omitted).\r\n * @param offset - start offset.\r\n * @returns the target array.\r\n */\r\n toArray(array: number[] = [], offset = 0): number[] {\r\n array[offset] = this.x\r\n array[offset + 1] = this.y\r\n array[offset + 2] = this.z\r\n return array\r\n }\r\n\r\n /**\r\n * Return true when all components are exactly equal.\n * @param v - vector to compare with.\r\n * @returns true when all components are strictly equal.\r\n */\r\n equals(v: Vec3): boolean {\r\n return v.x === this.x && v.y === this.y && v.z === this.z\r\n }\r\n}"]}
1
+ {"version":3,"file":"Vec3.js","sourceRoot":"","sources":["../../src/math3d/Vec3.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * math3d/Vec3 — three.js r162 `Vector3` 的算法子集移植(可变类,与 three 逐位一致)。\n *\n * Ported from three.js r162 `src/math/Vector3.js` (MIT License, © 2010-2024\n * three.js authors). 仅保留 core/extra 实际使用的方法;公式与运算顺序逐行照抄,\n * 以保证与 three 的浮点结果逐位一致(parity 测试钉死)。**不得**顺手改写公式。\n *\n * 与 `api/geom-types/vecOps.ts`(compat 面 tuple 纯函数)职责分离:本类是 core\n * 内部 three 替换用的可变向量类,不是公开 API 面的一部分。\n */\n\nimport { Quat } from './Quat'\n\n/** 3D vector/point (mutable), three.js `Vector3` subset. */\nexport class Vec3 {\n /** three 内部标记,供 Matrix4.setPosition / makeTranslation 的向量参数判定。 */\n readonly isVector3 = true\n\n /** X component. */\n x: number\n /** Y component. */\n y: number\n /** Z component. */\n z: number\n\n /**\n * @param x - X component.\n * @param y - Y component.\n * @param z - Z component.\n */\n constructor(x = 0, y = 0, z = 0) {\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Set the component values.\n * @param x - X component.\n * @param y - Y component.\n * @param z - Z component (kept when omitted, matching three's sprite.scale.set).\n * @returns this\n */\n set(x: number, y: number, z?: number): this {\n if (z === undefined) z = this.z\n this.x = x\n this.y = y\n this.z = z\n return this\n }\n\n /**\n * Set all components to the same scalar.\n * @param scalar - value for all components.\n * @returns this\n */\n setScalar(scalar: number): this {\n this.x = scalar\n this.y = scalar\n this.z = scalar\n return this\n }\n\n /**\n * Set the X component.\n * @param x - X component.\n * @returns this\n */\n setX(x: number): this {\n this.x = x\n return this\n }\n\n /**\n * Set the Y component.\n * @param y - Y component.\n * @returns this\n */\n setY(y: number): this {\n this.y = y\n return this\n }\n\n /**\n * Set the Z component.\n * @param z - Z component.\n * @returns this\n */\n setZ(z: number): this {\n this.z = z\n return this\n }\n\n /**\n * Return a new vector with the same components.\n * @returns a new vector with the same components.\n */\n clone(): Vec3 {\n return new Vec3(this.x, this.y, this.z)\n }\n\n /**\n * Copy the components from another vector.\n * @param v - source vector.\n * @returns this\n */\n copy(v: Vec3): this {\n this.x = v.x\n this.y = v.y\n this.z = v.z\n return this\n }\n\n /**\n * Add a vector component-wise.\n * @param v - right operand.\n * @returns this\n */\n add(v: Vec3): this {\n this.x += v.x\n this.y += v.y\n this.z += v.z\n return this\n }\n\n /**\n * Add a scalar to every component.\n * @param s - scalar.\n * @returns this\n */\n addScalar(s: number): this {\n this.x += s\n this.y += s\n this.z += s\n return this\n }\n\n /**\n * Set this to a + b, component-wise.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n addVectors(a: Vec3, b: Vec3): this {\n this.x = a.x + b.x\n this.y = a.y + b.y\n this.z = a.z + b.z\n return this\n }\n\n /**\n * Add v scaled by s, component-wise.\n * @param v - source vector.\n * @param s - scalar.\n * @returns this\n */\n addScaledVector(v: Vec3, s: number): this {\n this.x += v.x * s\n this.y += v.y * s\n this.z += v.z * s\n return this\n }\n\n /**\n * Subtract a vector component-wise.\n * @param v - right operand.\n * @returns this\n */\n sub(v: Vec3): this {\n this.x -= v.x\n this.y -= v.y\n this.z -= v.z\n return this\n }\n\n /**\n * Subtract a scalar from every component.\n * @param s - scalar.\n * @returns this\n */\n subScalar(s: number): this {\n this.x -= s\n this.y -= s\n this.z -= s\n return this\n }\n\n /**\n * Set this to a - b, component-wise.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n subVectors(a: Vec3, b: Vec3): this {\n this.x = a.x - b.x\n this.y = a.y - b.y\n this.z = a.z - b.z\n return this\n }\n\n /**\n * Multiply component-wise by a vector.\n * @param v - right operand.\n * @returns this\n */\n multiply(v: Vec3): this {\n this.x *= v.x\n this.y *= v.y\n this.z *= v.z\n return this\n }\n\n /**\n * Multiply every component by a scalar.\n * @param scalar - scalar factor.\n * @returns this\n */\n multiplyScalar(scalar: number): this {\n this.x *= scalar\n this.y *= scalar\n this.z *= scalar\n return this\n }\n\n /**\n * Set this to a * b, component-wise.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n multiplyVectors(a: Vec3, b: Vec3): this {\n this.x = a.x * b.x\n this.y = a.y * b.y\n this.z = a.z * b.z\n return this\n }\n\n /**\n * Rotate the vector by Euler angles (radians).\n * @param euler - Euler angles (radians) with an order tag.\n * @returns this\n */\n applyEuler(euler: { x: number; y: number; z: number; order: string }): this {\n return this.applyQuaternion(new Quat().setFromEuler(euler))\n }\n\n /**\n * Rotate the vector around an axis by an angle (radians).\n * @param axis - rotation axis (unit length assumed).\n * @param angle - rotation angle in radians.\n * @returns this\n */\n applyAxisAngle(axis: Vec3, angle: number): this {\n return this.applyQuaternion(new Quat().setFromAxisAngle(axis, angle))\n }\n\n /**\n * Transform the vector by a 4x4 matrix (as a point).\n * @param m - affine 4x4 matrix (three column-major `elements` layout).\n * @returns this\n */\n applyMatrix4(m: { elements: number[] }): this {\n const x = this.x\n const y = this.y\n const z = this.z\n const e = m.elements\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15])\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w\n return this\n }\n\n /**\n * Rotate the vector by a quaternion.\n * @param q - unit quaternion.\n * @returns this\n */\n applyQuaternion(q: { x: number; y: number; z: number; w: number }): this {\n const vx = this.x\n const vy = this.y\n const vz = this.z\n const qx = q.x\n const qy = q.y\n const qz = q.z\n const qw = q.w\n const tx = 2 * (qy * vz - qz * vy)\n const ty = 2 * (qz * vx - qx * vz)\n const tz = 2 * (qx * vy - qy * vx)\n this.x = vx + qw * tx + qy * tz - qz * ty\n this.y = vy + qw * ty + qz * tx - qx * tz\n this.z = vz + qw * tz + qx * ty - qy * tx\n return this\n }\n\n /**\n * Divide component-wise by a vector.\n * @param v - right operand.\n * @returns this\n */\n divide(v: Vec3): this {\n this.x /= v.x\n this.y /= v.y\n this.z /= v.z\n return this\n }\n\n /**\n * Divide every component by a scalar.\n * @param scalar - scalar divisor.\n * @returns this\n */\n divideScalar(scalar: number): this {\n return this.multiplyScalar(1 / scalar)\n }\n\n /**\n * Negate every component.\n * @returns this\n */\n negate(): this {\n this.x = -this.x\n this.y = -this.y\n this.z = -this.z\n return this\n }\n\n /**\n * Return the dot product with another vector.\n * @param v - right operand.\n * @returns the dot product.\n */\n dot(v: Vec3): number {\n return this.x * v.x + this.y * v.y + this.z * v.z\n }\n\n /**\n * Return the squared length.\n * @returns the squared length.\n */\n lengthSq(): number {\n return this.x * this.x + this.y * this.y + this.z * this.z\n }\n\n /**\n * Return the Euclidean length.\n * @returns the Euclidean length.\n */\n length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\n }\n\n /**\n * Scale to unit length (zero-length stays zero).\n * @returns this\n */\n normalize(): this {\n return this.divideScalar(this.length() || 1)\n }\n\n /**\n * Scale to the given length.\n * @param length - target length.\n * @returns this\n */\n setLength(length: number): this {\n return this.normalize().multiplyScalar(length)\n }\n\n /**\n * Interpolate towards v by t in [0, 1].\n * @param v - target vector.\n * @param alpha - interpolation factor.\n * @returns this\n */\n lerp(v: Vec3, alpha: number): this {\n this.x += (v.x - this.x) * alpha\n this.y += (v.y - this.y) * alpha\n this.z += (v.z - this.z) * alpha\n return this\n }\n\n /**\n * Set this to the linear interpolation of a and b.\n * @param v1 - start vector.\n * @param v2 - end vector.\n * @param alpha - interpolation factor.\n * @returns this\n */\n lerpVectors(v1: Vec3, v2: Vec3, alpha: number): this {\n this.x = v1.x + (v2.x - v1.x) * alpha\n this.y = v1.y + (v2.y - v1.y) * alpha\n this.z = v1.z + (v2.z - v1.z) * alpha\n return this\n }\n\n /**\n * Set this to the cross product with v.\n * @param v - right operand.\n * @returns this\n */\n cross(v: Vec3): this {\n return this.crossVectors(this, v)\n }\n\n /**\n * Set this to the cross product of a and b.\n * @param a - left operand.\n * @param b - right operand.\n * @returns this\n */\n crossVectors(a: Vec3, b: Vec3): this {\n const ax = a.x\n const ay = a.y\n const az = a.z\n const bx = b.x\n const by = b.y\n const bz = b.z\n this.x = ay * bz - az * by\n this.y = az * bx - ax * bz\n this.z = ax * by - ay * bx\n return this\n }\n\n /**\n * Return the Euclidean distance to another vector.\n * @param v - target vector.\n * @returns the distance.\n */\n distanceTo(v: Vec3): number {\n return Math.sqrt(this.distanceToSquared(v))\n }\n\n /**\n * Return the squared distance to another vector.\n * @param v - target vector.\n * @returns the squared distance.\n */\n distanceToSquared(v: Vec3): number {\n const dx = this.x - v.x\n const dy = this.y - v.y\n const dz = this.z - v.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Return the angle (radians) to another vector.\n * @param v - target vector.\n * @returns the unsigned angle in radians.\n */\n angleTo(v: Vec3): number {\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq())\n if (denominator === 0) return Math.PI / 2\n const theta = this.dot(v) / denominator\n return Math.acos(Math.max(-1, Math.min(1, theta)))\n }\n\n /**\n * Clamp each component to the per-component minimum with v.\n * @param v - target vector (component-wise minimum).\n * @returns this\n */\n min(v: Vec3): this {\n this.x = Math.min(this.x, v.x)\n this.y = Math.min(this.y, v.y)\n this.z = Math.min(this.z, v.z)\n return this\n }\n\n /**\n * Clamp each component to the per-component maximum with v.\n * @param v - target vector (component-wise maximum).\n * @returns this\n */\n max(v: Vec3): this {\n this.x = Math.max(this.x, v.x)\n this.y = Math.max(this.y, v.y)\n this.z = Math.max(this.z, v.z)\n return this\n }\n\n /**\n * Clamp every component into [min, max].\n * @param minVal - lower clamp bound.\n * @param maxVal - upper clamp bound.\n * @returns this\n */\n clampScalar(minVal: number, maxVal: number): this {\n this.x = Math.max(minVal, Math.min(maxVal, this.x))\n this.y = Math.max(minVal, Math.min(maxVal, this.y))\n this.z = Math.max(minVal, Math.min(maxVal, this.z))\n return this\n }\n\n /**\n * Set the components from the translation part of a matrix.\n * @param m - matrix (column-major `elements`).\n * @returns this\n */\n setFromMatrixPosition(m: { elements: number[] }): this {\n const e = m.elements\n this.x = e[12]\n this.y = e[13]\n this.z = e[14]\n return this\n }\n\n /**\n * Set the components from a matrix column.\n * @param m - matrix (column-major `elements`).\n * @param index - column index.\n * @returns this\n */\n setFromMatrixColumn(m: { elements: number[] }, index: number): this {\n return this.fromArray(m.elements, index * 4)\n }\n\n /**\n * Set the components from the scale part of a matrix.\n * @param m - matrix (column-major `elements`).\n * @returns the column lengths as (x, y, z) scale factors.\n */\n setFromMatrixScale(m: { elements: number[] }): this {\n const sx = this.setFromMatrixColumn(m, 0).length()\n const sy = this.setFromMatrixColumn(m, 1).length()\n const sz = this.setFromMatrixColumn(m, 2).length()\n this.x = sx\n this.y = sy\n this.z = sz\n return this\n }\n\n /**\n * Load the components from an array-like.\n * @param array - source array.\n * @param offset - start offset.\n * @returns this\n */\n fromArray(array: ArrayLike<number>, offset = 0): this {\n this.x = array[offset]\n this.y = array[offset + 1]\n this.z = array[offset + 2]\n return this\n }\n\n /**\n * Write the components into an array.\n * @param array - target array (created when omitted).\n * @param offset - start offset.\n * @returns the target array.\n */\n toArray(array: number[] = [], offset = 0): number[] {\n array[offset] = this.x\n array[offset + 1] = this.y\n array[offset + 2] = this.z\n return array\n }\n\n /**\n * Return true when all components are exactly equal.\n * @param v - vector to compare with.\n * @returns true when all components are strictly equal.\n */\n equals(v: Vec3): boolean {\n return v.x === this.x && v.y === this.y && v.z === this.z\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/math3d/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAmB,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAmB,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA","sourcesContent":["/**\r\n * math3d — three.js math 子集的零依赖移植层(L0 数学层)。\r\n *\r\n * 用途:替换 core / `@faicad/faijs-extra` 对 three.js `Vector2` / `Vector3` /\r\n * `Matrix4` / `Quaternion` / `Euler` / `Plane` / `Box3` 的依赖。所有类的公式与\r\n * 运算顺序逐行移植自 three r162(MIT License, © 2010-2024 three.js authors),\r\n * 由 `test/math3d/three-parity.test.ts` 逐位对照钉死。\r\n *\r\n * 与 `api/geom-types/vecOps.ts`(compat 面 tuple 纯函数,面向库开发者)职责分离:\r\n * 本层是 core 内部的 three 替换,不进入包级公开 API 面。\r\n */\r\n\r\nexport { Vec3 } from './Vec3'\r\nexport { Vec2 } from './Vec2'\r\nexport { Quat } from './Quat'\r\nexport { Mat4, type MatrixLike } from './Mat4'\r\nexport { Euler, type EulerOrder } from './Euler'\r\nexport { Plane } from './Plane'\r\nexport { Box3 } from './Box3'"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/math3d/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAmB,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAmB,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA","sourcesContent":["/**\n * math3d — three.js math 子集的零依赖移植层(L0 数学层)。\n *\n * 用途:替换 core / `@faicad/faijs-extra` 对 three.js `Vector2` / `Vector3` /\n * `Matrix4` / `Quaternion` / `Euler` / `Plane` / `Box3` 的依赖。所有类的公式与\n * 运算顺序逐行移植自 three r162(MIT License, © 2010-2024 three.js authors),\n * 由 `test/math3d/three-parity.test.ts` 逐位对照钉死。\n *\n * 与 `api/geom-types/vecOps.ts`(compat 面 tuple 纯函数,面向库开发者)职责分离:\n * 本层是 core 内部的 three 替换,不进入包级公开 API 面。\n */\n\nexport { Vec3 } from './Vec3'\nexport { Vec2 } from './Vec2'\nexport { Quat } from './Quat'\nexport { Mat4, type MatrixLike } from './Mat4'\nexport { Euler, type EulerOrder } from './Euler'\nexport { Plane } from './Plane'\nexport { Box3 } from './Box3'"]}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * meshdata/contour — 2D 轮廓类型(three `THREE.Shape` 的自有替代)。
3
+ *
4
+ * 语义对应:
5
+ * - `outer` ↔ three `Shape` 的外轮廓点集(points)
6
+ * - `holes` ↔ three `Shape.holes`(孔洞子路径)
7
+ * - 多条互不相交轮廓(`SVGLoader.createShapes` 返回 `Shape[]` 的情形)用 `Contour[]` 表达
8
+ *
9
+ * 坐标约定:**Y-up 平面坐标**(与 core 世界坐标系一致,+Z 向上、轮廓位于 XY 平面)。
10
+ * 从 SVG(Y-down)/ opentype(Y-down)来的数据由调用方负责翻转后再交给本模块。
11
+ */
12
+ /** 2D 平面点(轮廓顶点)。 */
13
+ export interface P2 {
14
+ x: number;
15
+ y: number;
16
+ }
17
+ /** 一条 2D 轮廓:外环 + 孔环。 */
18
+ export interface Contour {
19
+ outer: P2[];
20
+ holes: P2[][];
21
+ }
22
+ /**
23
+ * Shoelace 有符号面积。Y-up 坐标系下 >0 为逆时针(CCW)。
24
+ * @param pts - 轮廓顶点(含首尾闭环约定则自动忽略重复尾点的影响)。
25
+ * @returns the signed area; 0 when fewer than 3 points.
26
+ */
27
+ export declare function signedArea2(pts: P2[]): number;
28
+ /**
29
+ * 反转轮廓顶点顺序(用于 winding 归一:外环转 CCW、孔环转 CW)。
30
+ * @param pts - source points.
31
+ * @returns a new array with reversed order.
32
+ */
33
+ export declare function reverse2(pts: P2[]): P2[];
34
+ //# sourceMappingURL=contour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour.d.ts","sourceRoot":"","sources":["../../../src/mesh/meshdata/contour.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oBAAoB;AACpB,MAAM,WAAW,EAAE;IACjB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,wBAAwB;AACxB,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,EAAE,EAAE,CAAA;IACX,KAAK,EAAE,EAAE,EAAE,EAAE,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM,CAS7C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAIxC"}