@faicad/faijs 0.31.1 → 0.32.3

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 (1538) hide show
  1. package/dist/api/api-namespace.d.ts.map +1 -1
  2. package/dist/api/api-namespace.js +9 -3
  3. package/dist/api/api-namespace.js.map +1 -1
  4. package/dist/api/boolean-op/index.d.ts.map +1 -1
  5. package/dist/api/boolean-op/index.js +1 -0
  6. package/dist/api/boolean-op/index.js.map +1 -1
  7. package/dist/api/boolean.d.ts.map +1 -1
  8. package/dist/api/boolean.js +4 -0
  9. package/dist/api/boolean.js.map +1 -1
  10. package/dist/api/brep-operations/joinery-brep.js +10 -10
  11. package/dist/api/brep-operations/joinery-brep.js.map +1 -1
  12. package/dist/api/chamfer.d.ts.map +1 -1
  13. package/dist/api/chamfer.js +1 -0
  14. package/dist/api/chamfer.js.map +1 -1
  15. package/dist/api/curve-sketch/index.d.ts.map +1 -1
  16. package/dist/api/curve-sketch/index.js +3 -0
  17. package/dist/api/curve-sketch/index.js.map +1 -1
  18. package/dist/api/draft.d.ts.map +1 -1
  19. package/dist/api/draft.js +1 -0
  20. package/dist/api/draft.js.map +1 -1
  21. package/dist/api/engrave.d.ts.map +1 -1
  22. package/dist/api/engrave.js +1 -0
  23. package/dist/api/engrave.js.map +1 -1
  24. package/dist/api/extrude.d.ts.map +1 -1
  25. package/dist/api/extrude.js +18 -17
  26. package/dist/api/extrude.js.map +1 -1
  27. package/dist/api/feature-repair.d.ts.map +1 -1
  28. package/dist/api/feature-repair.js +6 -0
  29. package/dist/api/feature-repair.js.map +1 -1
  30. package/dist/api/fillet-variable.d.ts.map +1 -1
  31. package/dist/api/fillet-variable.js +1 -0
  32. package/dist/api/fillet-variable.js.map +1 -1
  33. package/dist/api/fillet.d.ts.map +1 -1
  34. package/dist/api/fillet.js +1 -0
  35. package/dist/api/fillet.js.map +1 -1
  36. package/dist/api/generated/operations.js +16 -16
  37. package/dist/api/generated/operations.js.map +1 -1
  38. package/dist/api/generated/sketching.js +1 -1
  39. package/dist/api/generated/sketching.js.map +1 -1
  40. package/dist/api/generated/topology.js +18 -18
  41. package/dist/api/generated/topology.js.map +1 -1
  42. package/dist/api/helix.d.ts.map +1 -1
  43. package/dist/api/helix.js +1 -0
  44. package/dist/api/helix.js.map +1 -1
  45. package/dist/api/import-brep.d.ts.map +1 -1
  46. package/dist/api/import-brep.js +1 -0
  47. package/dist/api/import-brep.js.map +1 -1
  48. package/dist/api/import-step.d.ts.map +1 -1
  49. package/dist/api/import-step.js +1 -0
  50. package/dist/api/import-step.js.map +1 -1
  51. package/dist/api/index.d.ts +5 -2
  52. package/dist/api/index.d.ts.map +1 -1
  53. package/dist/api/index.js +3 -0
  54. package/dist/api/index.js.map +1 -1
  55. package/dist/api/loft-advanced.d.ts +66 -0
  56. package/dist/api/loft-advanced.d.ts.map +1 -0
  57. package/dist/api/loft-advanced.js +112 -0
  58. package/dist/api/loft-advanced.js.map +1 -0
  59. package/dist/api/loft.d.ts +16 -23
  60. package/dist/api/loft.d.ts.map +1 -1
  61. package/dist/api/loft.js +22 -40
  62. package/dist/api/loft.js.map +1 -1
  63. package/dist/api/measure-query/index.d.ts.map +1 -1
  64. package/dist/api/measure-query/index.js +2 -0
  65. package/dist/api/measure-query/index.js.map +1 -1
  66. package/dist/api/pattern.d.ts.map +1 -1
  67. package/dist/api/pattern.js +1 -0
  68. package/dist/api/pattern.js.map +1 -1
  69. package/dist/api/place.d.ts.map +1 -1
  70. package/dist/api/place.js +1 -0
  71. package/dist/api/place.js.map +1 -1
  72. package/dist/api/profile.d.ts.map +1 -1
  73. package/dist/api/profile.js +1 -0
  74. package/dist/api/profile.js.map +1 -1
  75. package/dist/api/punch-hole.d.ts.map +1 -1
  76. package/dist/api/punch-hole.js +1 -0
  77. package/dist/api/punch-hole.js.map +1 -1
  78. package/dist/api/replicate.d.ts.map +1 -1
  79. package/dist/api/replicate.js +6 -0
  80. package/dist/api/replicate.js.map +1 -1
  81. package/dist/api/revolve.d.ts.map +1 -1
  82. package/dist/api/revolve.js +1 -0
  83. package/dist/api/revolve.js.map +1 -1
  84. package/dist/api/screw.d.ts.map +1 -1
  85. package/dist/api/screw.js +1 -0
  86. package/dist/api/screw.js.map +1 -1
  87. package/dist/api/sdf.d.ts.map +1 -1
  88. package/dist/api/sdf.js +1 -0
  89. package/dist/api/sdf.js.map +1 -1
  90. package/dist/api/shell.d.ts.map +1 -1
  91. package/dist/api/shell.js +1 -0
  92. package/dist/api/shell.js.map +1 -1
  93. package/dist/api/sketch-on-face.d.ts +34 -30
  94. package/dist/api/sketch-on-face.d.ts.map +1 -1
  95. package/dist/api/sketch-on-face.js +41 -31
  96. package/dist/api/sketch-on-face.js.map +1 -1
  97. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  98. package/dist/api/sketch-on-plane.js +1 -0
  99. package/dist/api/sketch-on-plane.js.map +1 -1
  100. package/dist/api/sketch-on-surface.d.ts +76 -0
  101. package/dist/api/sketch-on-surface.d.ts.map +1 -0
  102. package/dist/api/sketch-on-surface.js +99 -0
  103. package/dist/api/sketch-on-surface.js.map +1 -0
  104. package/dist/api/solid-offset/index.d.ts.map +1 -1
  105. package/dist/api/solid-offset/index.js +1 -0
  106. package/dist/api/solid-offset/index.js.map +1 -1
  107. package/dist/api/split.d.ts.map +1 -1
  108. package/dist/api/split.js +1 -0
  109. package/dist/api/split.js.map +1 -1
  110. package/dist/api/surface/arg-spec.d.ts +5 -4
  111. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  112. package/dist/api/surface/arg-spec.js +2 -2
  113. package/dist/api/surface/arg-spec.js.map +1 -1
  114. package/dist/api/surface-face/index.d.ts.map +1 -1
  115. package/dist/api/surface-face/index.js +5 -0
  116. package/dist/api/surface-face/index.js.map +1 -1
  117. package/dist/api/surface.d.ts.map +1 -1
  118. package/dist/api/surface.js +1 -0
  119. package/dist/api/surface.js.map +1 -1
  120. package/dist/api/sweep-advanced.d.ts +117 -0
  121. package/dist/api/sweep-advanced.d.ts.map +1 -0
  122. package/dist/api/sweep-advanced.js +94 -0
  123. package/dist/api/sweep-advanced.js.map +1 -0
  124. package/dist/api/sweep.d.ts +18 -88
  125. package/dist/api/sweep.d.ts.map +1 -1
  126. package/dist/api/sweep.js +27 -30
  127. package/dist/api/sweep.js.map +1 -1
  128. package/dist/api/thicken.d.ts.map +1 -1
  129. package/dist/api/thicken.js +1 -0
  130. package/dist/api/thicken.js.map +1 -1
  131. package/dist/api/transform.d.ts.map +1 -1
  132. package/dist/api/transform.js +2 -0
  133. package/dist/api/transform.js.map +1 -1
  134. package/dist/api/wire.d.ts.map +1 -1
  135. package/dist/api/wire.js +1 -0
  136. package/dist/api/wire.js.map +1 -1
  137. package/dist/boolean/cross-section.d.ts +7 -6
  138. package/dist/boolean/cross-section.d.ts.map +1 -1
  139. package/dist/boolean/cross-section.js +38 -27
  140. package/dist/boolean/cross-section.js.map +1 -1
  141. package/dist/boolean/deriveNormals.d.ts +5 -5
  142. package/dist/boolean/deriveNormals.d.ts.map +1 -1
  143. package/dist/boolean/deriveNormals.js +18 -18
  144. package/dist/boolean/deriveNormals.js.map +1 -1
  145. package/dist/boolean/extrude-helpers.d.ts +6 -6
  146. package/dist/boolean/extrude-helpers.d.ts.map +1 -1
  147. package/dist/boolean/extrude-helpers.js +6 -6
  148. package/dist/boolean/extrude-helpers.js.map +1 -1
  149. package/dist/boolean/geo-convert.d.ts +11 -8
  150. package/dist/boolean/geo-convert.d.ts.map +1 -1
  151. package/dist/boolean/geo-convert.js +17 -73
  152. package/dist/boolean/geo-convert.js.map +1 -1
  153. package/dist/boolean/index.js.map +1 -1
  154. package/dist/brep/brep-ops.d.ts +5 -5
  155. package/dist/brep/brep-ops.d.ts.map +1 -1
  156. package/dist/brep/brep-ops.js +42 -42
  157. package/dist/brep/brep-ops.js.map +1 -1
  158. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  159. package/dist/brep/engine/adapters/brep-mock.js +24 -0
  160. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  161. package/dist/brep/engine/primitives.d.ts +30 -0
  162. package/dist/brep/engine/primitives.d.ts.map +1 -1
  163. package/dist/brep/engine/primitives.js.map +1 -1
  164. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  165. package/dist/brepkit-kernel/brepkitKernel.js +138 -0
  166. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  167. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  168. package/dist/cad-runtime/runtime.js +5 -2
  169. package/dist/cad-runtime/runtime.js.map +1 -1
  170. package/dist/define-op.d.ts +16 -7
  171. package/dist/define-op.d.ts.map +1 -1
  172. package/dist/define-op.js +2 -0
  173. package/dist/define-op.js.map +1 -1
  174. package/dist/index.d.ts +1 -0
  175. package/dist/index.d.ts.map +1 -1
  176. package/dist/index.js.map +1 -1
  177. package/dist/lang/codegen.d.ts +14 -3
  178. package/dist/lang/codegen.d.ts.map +1 -1
  179. package/dist/lang/codegen.js +80 -5
  180. package/dist/lang/codegen.js.map +1 -1
  181. package/dist/lang/metadata-extractor.d.ts +10 -3
  182. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  183. package/dist/lang/metadata-extractor.js +160 -65
  184. package/dist/lang/metadata-extractor.js.map +1 -1
  185. package/dist/lang/symbol-table.generated.d.ts +3 -0
  186. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  187. package/dist/lang/symbol-table.generated.js +3 -0
  188. package/dist/lang/symbol-table.generated.js.map +1 -1
  189. package/dist/math3d/Box3.d.ts +86 -0
  190. package/dist/math3d/Box3.d.ts.map +1 -0
  191. package/dist/math3d/Box3.js +149 -0
  192. package/dist/math3d/Box3.js.map +1 -0
  193. package/dist/math3d/Euler.d.ts +64 -0
  194. package/dist/math3d/Euler.d.ts.map +1 -0
  195. package/dist/math3d/Euler.js +94 -0
  196. package/dist/math3d/Euler.js.map +1 -0
  197. package/dist/math3d/Mat4.d.ts +196 -0
  198. package/dist/math3d/Mat4.d.ts.map +1 -0
  199. package/dist/math3d/Mat4.js +518 -0
  200. package/dist/math3d/Mat4.js.map +1 -0
  201. package/dist/math3d/Plane.d.ts +67 -0
  202. package/dist/math3d/Plane.d.ts.map +1 -0
  203. package/dist/math3d/Plane.js +90 -0
  204. package/dist/math3d/Plane.js.map +1 -0
  205. package/dist/math3d/Quat.d.ts +163 -0
  206. package/dist/math3d/Quat.d.ts.map +1 -0
  207. package/dist/math3d/Quat.js +408 -0
  208. package/dist/math3d/Quat.js.map +1 -0
  209. package/dist/math3d/Vec2.d.ts +185 -0
  210. package/dist/math3d/Vec2.d.ts.map +1 -0
  211. package/dist/math3d/Vec2.js +276 -0
  212. package/dist/math3d/Vec2.js.map +1 -0
  213. package/dist/math3d/Vec3.d.ts +326 -0
  214. package/dist/math3d/Vec3.d.ts.map +1 -0
  215. package/dist/math3d/Vec3.js +521 -0
  216. package/dist/math3d/Vec3.js.map +1 -0
  217. package/dist/math3d/index.d.ts +19 -0
  218. package/dist/math3d/index.d.ts.map +1 -0
  219. package/dist/math3d/index.js +19 -0
  220. package/dist/math3d/index.js.map +1 -0
  221. package/dist/mesh/decoration-provider.d.ts +2 -2
  222. package/dist/mesh/decoration-provider.d.ts.map +1 -1
  223. package/dist/mesh/decoration-provider.js.map +1 -1
  224. package/dist/mesh/engrave.d.ts.map +1 -1
  225. package/dist/mesh/engrave.js +36 -37
  226. package/dist/mesh/engrave.js.map +1 -1
  227. package/dist/mesh/io.d.ts.map +1 -1
  228. package/dist/mesh/io.js +6 -7
  229. package/dist/mesh/io.js.map +1 -1
  230. package/dist/mesh/knurl/KnurlGenerator.d.ts +8 -7
  231. package/dist/mesh/knurl/KnurlGenerator.d.ts.map +1 -1
  232. package/dist/mesh/knurl/KnurlGenerator.js +9 -9
  233. package/dist/mesh/knurl/KnurlGenerator.js.map +1 -1
  234. package/dist/mesh/knurl/displacement.d.ts +7 -6
  235. package/dist/mesh/knurl/displacement.d.ts.map +1 -1
  236. package/dist/mesh/knurl/displacement.js +29 -29
  237. package/dist/mesh/knurl/displacement.js.map +1 -1
  238. package/dist/mesh/knurl/subdivision.d.ts +3 -3
  239. package/dist/mesh/knurl/subdivision.d.ts.map +1 -1
  240. package/dist/mesh/knurl/subdivision.js +21 -15
  241. package/dist/mesh/knurl/subdivision.js.map +1 -1
  242. package/dist/mesh/knurl/textureLoader.d.ts +3 -3
  243. package/dist/mesh/knurl/textureLoader.d.ts.map +1 -1
  244. package/dist/mesh/knurl/textureLoader.js.map +1 -1
  245. package/dist/mesh/meshdata/index.d.ts +12 -0
  246. package/dist/mesh/meshdata/index.d.ts.map +1 -0
  247. package/dist/mesh/meshdata/index.js +12 -0
  248. package/dist/mesh/meshdata/index.js.map +1 -0
  249. package/dist/mesh/meshdata/ops.d.ts +62 -0
  250. package/dist/mesh/meshdata/ops.d.ts.map +1 -0
  251. package/dist/mesh/meshdata/ops.js +160 -0
  252. package/dist/mesh/meshdata/ops.js.map +1 -0
  253. package/dist/mesh/meshdata/parametric.d.ts +70 -0
  254. package/dist/mesh/meshdata/parametric.d.ts.map +1 -0
  255. package/dist/mesh/meshdata/parametric.js +213 -0
  256. package/dist/mesh/meshdata/parametric.js.map +1 -0
  257. package/dist/mesh/meshdata/weld.d.ts +21 -0
  258. package/dist/mesh/meshdata/weld.d.ts.map +1 -0
  259. package/dist/mesh/meshdata/weld.js +50 -0
  260. package/dist/mesh/meshdata/weld.js.map +1 -0
  261. package/dist/mesh/primitives.d.ts +1 -1
  262. package/dist/mesh/primitives.d.ts.map +1 -1
  263. package/dist/mesh/primitives.js +38 -39
  264. package/dist/mesh/primitives.js.map +1 -1
  265. package/dist/mesh/query.js +11 -11
  266. package/dist/mesh/query.js.map +1 -1
  267. package/dist/mesh/stl-loader.d.ts +7 -7
  268. package/dist/mesh/stl-loader.d.ts.map +1 -1
  269. package/dist/mesh/stl-loader.js +12 -24
  270. package/dist/mesh/stl-loader.js.map +1 -1
  271. package/dist/mesh/threemf-view.d.ts +11 -11
  272. package/dist/mesh/threemf-view.d.ts.map +1 -1
  273. package/dist/mesh/threemf-view.js +10 -10
  274. package/dist/mesh/threemf-view.js.map +1 -1
  275. package/dist/mesh/transform.d.ts +14 -8
  276. package/dist/mesh/transform.d.ts.map +1 -1
  277. package/dist/mesh/transform.js +18 -13
  278. package/dist/mesh/transform.js.map +1 -1
  279. package/dist/mesh/types.d.ts +2 -0
  280. package/dist/mesh/types.d.ts.map +1 -1
  281. package/dist/mesh/types.js.map +1 -1
  282. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  283. package/dist/occt-kernel/occt-primitives.js +20 -0
  284. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  285. package/dist/primitives/brep-primitives.d.ts +8 -12
  286. package/dist/primitives/brep-primitives.d.ts.map +1 -1
  287. package/dist/primitives/brep-primitives.js +10 -28
  288. package/dist/primitives/brep-primitives.js.map +1 -1
  289. package/dist/primitives/index.js.map +1 -1
  290. package/dist/primitives/mesh-primitives.d.ts +10 -10
  291. package/dist/primitives/mesh-primitives.d.ts.map +1 -1
  292. package/dist/primitives/mesh-primitives.js +29 -76
  293. package/dist/primitives/mesh-primitives.js.map +1 -1
  294. package/dist/primitives/screw/screw.d.ts +3 -3
  295. package/dist/primitives/screw/screw.d.ts.map +1 -1
  296. package/dist/primitives/screw/screw.js +10 -9
  297. package/dist/primitives/screw/screw.js.map +1 -1
  298. package/dist/sdf/index.js.map +1 -1
  299. package/dist/units.d.ts +40 -0
  300. package/dist/units.d.ts.map +1 -1
  301. package/dist/units.js.map +1 -1
  302. package/package.json +15 -5
  303. package/dist/api/brep-mirror/booleanFns.d.ts +0 -40
  304. package/dist/api/brep-mirror/booleanFns.d.ts.map +0 -1
  305. package/dist/api/brep-mirror/booleanFns.js +0 -104
  306. package/dist/api/brep-mirror/booleanFns.js.map +0 -1
  307. package/dist/api/brep-mirror/brepHelpers.d.ts +0 -55
  308. package/dist/api/brep-mirror/brepHelpers.d.ts.map +0 -1
  309. package/dist/api/brep-mirror/brepHelpers.js +0 -131
  310. package/dist/api/brep-mirror/brepHelpers.js.map +0 -1
  311. package/dist/api/brep-mirror/compoundFns.d.ts +0 -47
  312. package/dist/api/brep-mirror/compoundFns.d.ts.map +0 -1
  313. package/dist/api/brep-mirror/compoundFns.js +0 -300
  314. package/dist/api/brep-mirror/compoundFns.js.map +0 -1
  315. package/dist/api/brep-mirror/healingFns.d.ts +0 -78
  316. package/dist/api/brep-mirror/healingFns.d.ts.map +0 -1
  317. package/dist/api/brep-mirror/healingFns.js +0 -294
  318. package/dist/api/brep-mirror/healingFns.js.map +0 -1
  319. package/dist/api/brep-mirror/hullFns.d.ts +0 -20
  320. package/dist/api/brep-mirror/hullFns.d.ts.map +0 -1
  321. package/dist/api/brep-mirror/hullFns.js +0 -46
  322. package/dist/api/brep-mirror/hullFns.js.map +0 -1
  323. package/dist/api/brep-mirror/joinery-brep.d.ts +0 -172
  324. package/dist/api/brep-mirror/joinery-brep.d.ts.map +0 -1
  325. package/dist/api/brep-mirror/joinery-brep.js +0 -463
  326. package/dist/api/brep-mirror/joinery-brep.js.map +0 -1
  327. package/dist/api/brep-mirror/patternFns.d.ts +0 -43
  328. package/dist/api/brep-mirror/patternFns.d.ts.map +0 -1
  329. package/dist/api/brep-mirror/patternFns.js +0 -178
  330. package/dist/api/brep-mirror/patternFns.js.map +0 -1
  331. package/dist/api/brep-mirror/primitiveFns.d.ts +0 -42
  332. package/dist/api/brep-mirror/primitiveFns.d.ts.map +0 -1
  333. package/dist/api/brep-mirror/primitiveFns.js +0 -104
  334. package/dist/api/brep-mirror/primitiveFns.js.map +0 -1
  335. package/dist/api/brep-mirror/roofFns.d.ts +0 -24
  336. package/dist/api/brep-mirror/roofFns.d.ts.map +0 -1
  337. package/dist/api/brep-mirror/roofFns.js +0 -229
  338. package/dist/api/brep-mirror/roofFns.js.map +0 -1
  339. package/dist/api/brep-mirror/straightSkeleton.d.ts +0 -36
  340. package/dist/api/brep-mirror/straightSkeleton.d.ts.map +0 -1
  341. package/dist/api/brep-mirror/straightSkeleton.js +0 -443
  342. package/dist/api/brep-mirror/straightSkeleton.js.map +0 -1
  343. package/dist/api/brep-mirror/sweepFns.d.ts +0 -55
  344. package/dist/api/brep-mirror/sweepFns.d.ts.map +0 -1
  345. package/dist/api/brep-mirror/sweepFns.js +0 -200
  346. package/dist/api/brep-mirror/sweepFns.js.map +0 -1
  347. package/dist/api/brep-mirror/threadFns.d.ts +0 -83
  348. package/dist/api/brep-mirror/threadFns.d.ts.map +0 -1
  349. package/dist/api/brep-mirror/threadFns.js +0 -138
  350. package/dist/api/brep-mirror/threadFns.js.map +0 -1
  351. package/dist/api/brep-mirror/topologyFns.d.ts +0 -74
  352. package/dist/api/brep-mirror/topologyFns.d.ts.map +0 -1
  353. package/dist/api/brep-mirror/topologyFns.js +0 -276
  354. package/dist/api/brep-mirror/topologyFns.js.map +0 -1
  355. package/dist/api/brepjs-compat/constants.d.ts +0 -11
  356. package/dist/api/brepjs-compat/constants.d.ts.map +0 -1
  357. package/dist/api/brepjs-compat/constants.js +0 -11
  358. package/dist/api/brepjs-compat/constants.js.map +0 -1
  359. package/dist/api/brepjs-compat/index.d.ts +0 -21
  360. package/dist/api/brepjs-compat/index.d.ts.map +0 -1
  361. package/dist/api/brepjs-compat/index.js +0 -22
  362. package/dist/api/brepjs-compat/index.js.map +0 -1
  363. package/dist/api/brepjs-compat/planeOps.d.ts +0 -98
  364. package/dist/api/brepjs-compat/planeOps.d.ts.map +0 -1
  365. package/dist/api/brepjs-compat/planeOps.js +0 -170
  366. package/dist/api/brepjs-compat/planeOps.js.map +0 -1
  367. package/dist/api/brepjs-compat/planeTypes.d.ts +0 -24
  368. package/dist/api/brepjs-compat/planeTypes.d.ts.map +0 -1
  369. package/dist/api/brepjs-compat/planeTypes.js +0 -8
  370. package/dist/api/brepjs-compat/planeTypes.js.map +0 -1
  371. package/dist/api/brepjs-compat/types.d.ts +0 -64
  372. package/dist/api/brepjs-compat/types.d.ts.map +0 -1
  373. package/dist/api/brepjs-compat/types.js +0 -48
  374. package/dist/api/brepjs-compat/types.js.map +0 -1
  375. package/dist/api/brepjs-compat/vecOps.d.ts +0 -124
  376. package/dist/api/brepjs-compat/vecOps.d.ts.map +0 -1
  377. package/dist/api/brepjs-compat/vecOps.js +0 -202
  378. package/dist/api/brepjs-compat/vecOps.js.map +0 -1
  379. package/dist/api/generated/brepjs/index.d.ts +0 -310
  380. package/dist/api/generated/brepjs/index.d.ts.map +0 -1
  381. package/dist/api/generated/brepjs/index.js +0 -195
  382. package/dist/api/generated/brepjs/index.js.map +0 -1
  383. package/dist/api/generated/cad/script-face.d.ts +0 -12
  384. package/dist/api/generated/cad/script-face.d.ts.map +0 -1
  385. package/dist/api/generated/cad/script-face.js +0 -146
  386. package/dist/api/generated/cad/script-face.js.map +0 -1
  387. package/dist/api/internal/compat-projection.d.ts +0 -55
  388. package/dist/api/internal/compat-projection.d.ts.map +0 -1
  389. package/dist/api/internal/compat-projection.js +0 -75
  390. package/dist/api/internal/compat-projection.js.map +0 -1
  391. package/dist/api/occt-kernel-bridge.d.ts +0 -118
  392. package/dist/api/occt-kernel-bridge.d.ts.map +0 -1
  393. package/dist/api/occt-kernel-bridge.js +0 -283
  394. package/dist/api/occt-kernel-bridge.js.map +0 -1
  395. package/dist/api/sketch.d.ts +0 -80
  396. package/dist/api/sketch.d.ts.map +0 -1
  397. package/dist/api/sketch.js +0 -155
  398. package/dist/api/sketch.js.map +0 -1
  399. package/dist/api/surface/projection-overrides.d.ts +0 -38
  400. package/dist/api/surface/projection-overrides.d.ts.map +0 -1
  401. package/dist/api/surface/projection-overrides.js +0 -169
  402. package/dist/api/surface/projection-overrides.js.map +0 -1
  403. package/dist/brepjs-compat.d.ts +0 -20
  404. package/dist/brepjs-compat.d.ts.map +0 -1
  405. package/dist/brepjs-compat.js +0 -20
  406. package/dist/brepjs-compat.js.map +0 -1
  407. package/dist/cad-runtime/createRuntimeWithCad.d.ts +0 -22
  408. package/dist/cad-runtime/createRuntimeWithCad.d.ts.map +0 -1
  409. package/dist/cad-runtime/createRuntimeWithCad.js +0 -29
  410. package/dist/cad-runtime/createRuntimeWithCad.js.map +0 -1
  411. package/dist/fcstd/attachment.d.ts +0 -72
  412. package/dist/fcstd/attachment.d.ts.map +0 -1
  413. package/dist/fcstd/attachment.js +0 -93
  414. package/dist/fcstd/attachment.js.map +0 -1
  415. package/dist/fcstd/build-fai-zip.d.ts +0 -40
  416. package/dist/fcstd/build-fai-zip.d.ts.map +0 -1
  417. package/dist/fcstd/build-fai-zip.js +0 -111
  418. package/dist/fcstd/build-fai-zip.js.map +0 -1
  419. package/dist/fcstd/cli.d.ts +0 -3
  420. package/dist/fcstd/cli.d.ts.map +0 -1
  421. package/dist/fcstd/cli.js +0 -37
  422. package/dist/fcstd/cli.js.map +0 -1
  423. package/dist/fcstd/codegen.d.ts +0 -79
  424. package/dist/fcstd/codegen.d.ts.map +0 -1
  425. package/dist/fcstd/codegen.js +0 -605
  426. package/dist/fcstd/codegen.js.map +0 -1
  427. package/dist/fcstd/container.d.ts +0 -75
  428. package/dist/fcstd/container.d.ts.map +0 -1
  429. package/dist/fcstd/container.js +0 -36
  430. package/dist/fcstd/container.js.map +0 -1
  431. package/dist/fcstd/contour.d.ts +0 -43
  432. package/dist/fcstd/contour.d.ts.map +0 -1
  433. package/dist/fcstd/contour.js +0 -96
  434. package/dist/fcstd/contour.js.map +0 -1
  435. package/dist/fcstd/convert.d.ts +0 -63
  436. package/dist/fcstd/convert.d.ts.map +0 -1
  437. package/dist/fcstd/convert.js +0 -274
  438. package/dist/fcstd/convert.js.map +0 -1
  439. package/dist/fcstd/document.d.ts +0 -48
  440. package/dist/fcstd/document.d.ts.map +0 -1
  441. package/dist/fcstd/document.js +0 -140
  442. package/dist/fcstd/document.js.map +0 -1
  443. package/dist/fcstd/expressions.d.ts +0 -74
  444. package/dist/fcstd/expressions.d.ts.map +0 -1
  445. package/dist/fcstd/expressions.js +0 -157
  446. package/dist/fcstd/expressions.js.map +0 -1
  447. package/dist/fcstd/external-geo.d.ts +0 -49
  448. package/dist/fcstd/external-geo.d.ts.map +0 -1
  449. package/dist/fcstd/external-geo.js +0 -140
  450. package/dist/fcstd/external-geo.js.map +0 -1
  451. package/dist/fcstd/feature-translate.d.ts +0 -189
  452. package/dist/fcstd/feature-translate.d.ts.map +0 -1
  453. package/dist/fcstd/feature-translate.js +0 -968
  454. package/dist/fcstd/feature-translate.js.map +0 -1
  455. package/dist/fcstd/index.d.ts +0 -23
  456. package/dist/fcstd/index.d.ts.map +0 -1
  457. package/dist/fcstd/index.js +0 -19
  458. package/dist/fcstd/index.js.map +0 -1
  459. package/dist/fcstd/placement.d.ts +0 -93
  460. package/dist/fcstd/placement.d.ts.map +0 -1
  461. package/dist/fcstd/placement.js +0 -117
  462. package/dist/fcstd/placement.js.map +0 -1
  463. package/dist/fcstd/planegcs-backend.d.ts +0 -34
  464. package/dist/fcstd/planegcs-backend.d.ts.map +0 -1
  465. package/dist/fcstd/planegcs-backend.js +0 -626
  466. package/dist/fcstd/planegcs-backend.js.map +0 -1
  467. package/dist/fcstd/sketch-parse.d.ts +0 -181
  468. package/dist/fcstd/sketch-parse.d.ts.map +0 -1
  469. package/dist/fcstd/sketch-parse.js +0 -227
  470. package/dist/fcstd/sketch-parse.js.map +0 -1
  471. package/dist/fcstd/sketch-solver.d.ts +0 -63
  472. package/dist/fcstd/sketch-solver.d.ts.map +0 -1
  473. package/dist/fcstd/sketch-solver.js +0 -28
  474. package/dist/fcstd/sketch-solver.js.map +0 -1
  475. package/dist/fcstd/sketch-verify.d.ts +0 -43
  476. package/dist/fcstd/sketch-verify.d.ts.map +0 -1
  477. package/dist/fcstd/sketch-verify.js +0 -62
  478. package/dist/fcstd/sketch-verify.js.map +0 -1
  479. package/dist/fcstd/structural-types.d.ts +0 -83
  480. package/dist/fcstd/structural-types.d.ts.map +0 -1
  481. package/dist/fcstd/structural-types.js +0 -121
  482. package/dist/fcstd/structural-types.js.map +0 -1
  483. package/dist/fcstd/unpack.d.ts +0 -44
  484. package/dist/fcstd/unpack.d.ts.map +0 -1
  485. package/dist/fcstd/unpack.js +0 -64
  486. package/dist/fcstd/unpack.js.map +0 -1
  487. package/dist/fcstd-convert.d.ts +0 -30
  488. package/dist/fcstd-convert.d.ts.map +0 -1
  489. package/dist/fcstd-convert.js +0 -27
  490. package/dist/fcstd-convert.js.map +0 -1
  491. package/dist/mesh/creased-normals.d.ts +0 -50
  492. package/dist/mesh/creased-normals.d.ts.map +0 -1
  493. package/dist/mesh/creased-normals.js +0 -114
  494. package/dist/mesh/creased-normals.js.map +0 -1
  495. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +0 -260
  496. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +0 -1
  497. package/dist/occt-kernel/generated/occtPlatform.generated.js +0 -875
  498. package/dist/occt-kernel/generated/occtPlatform.generated.js.map +0 -1
  499. package/dist/occt-kernel/stepMetaParser.d.ts +0 -44
  500. package/dist/occt-kernel/stepMetaParser.d.ts.map +0 -1
  501. package/dist/occt-kernel/stepMetaParser.js +0 -166
  502. package/dist/occt-kernel/stepMetaParser.js.map +0 -1
  503. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts +0 -106
  504. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts.map +0 -1
  505. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js +0 -341
  506. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js.map +0 -1
  507. package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts +0 -185
  508. package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts.map +0 -1
  509. package/dist/vendored/brepjs/2d/blueprints/blueprint.js +0 -361
  510. package/dist/vendored/brepjs/2d/blueprints/blueprint.js.map +0 -1
  511. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts +0 -15
  512. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts.map +0 -1
  513. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js +0 -28
  514. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js.map +0 -1
  515. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts +0 -29
  516. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts.map +0 -1
  517. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js +0 -86
  518. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js.map +0 -1
  519. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts +0 -57
  520. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts.map +0 -1
  521. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js +0 -92
  522. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js.map +0 -1
  523. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts +0 -58
  524. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts.map +0 -1
  525. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js +0 -346
  526. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js.map +0 -1
  527. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts +0 -30
  528. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts.map +0 -1
  529. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js +0 -45
  530. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js.map +0 -1
  531. package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts +0 -68
  532. package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts.map +0 -1
  533. package/dist/vendored/brepjs/2d/blueprints/blueprints.js +0 -116
  534. package/dist/vendored/brepjs/2d/blueprints/blueprints.js.map +0 -1
  535. package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts +0 -68
  536. package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts.map +0 -1
  537. package/dist/vendored/brepjs/2d/blueprints/boolean2D.js +0 -362
  538. package/dist/vendored/brepjs/2d/blueprints/boolean2D.js.map +0 -1
  539. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts +0 -34
  540. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts.map +0 -1
  541. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js +0 -176
  542. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js.map +0 -1
  543. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts +0 -55
  544. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts.map +0 -1
  545. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js +0 -110
  546. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js.map +0 -1
  547. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts +0 -41
  548. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts.map +0 -1
  549. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js +0 -90
  550. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js.map +0 -1
  551. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts +0 -85
  552. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts.map +0 -1
  553. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js +0 -136
  554. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js.map +0 -1
  555. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts +0 -48
  556. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts.map +0 -1
  557. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js +0 -154
  558. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js.map +0 -1
  559. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts +0 -342
  560. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts.map +0 -1
  561. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js +0 -32
  562. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js.map +0 -1
  563. package/dist/vendored/brepjs/2d/blueprints/index.d.ts +0 -16
  564. package/dist/vendored/brepjs/2d/blueprints/index.d.ts.map +0 -1
  565. package/dist/vendored/brepjs/2d/blueprints/index.js +0 -13
  566. package/dist/vendored/brepjs/2d/blueprints/index.js.map +0 -1
  567. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts +0 -18
  568. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts.map +0 -1
  569. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js +0 -230
  570. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js.map +0 -1
  571. package/dist/vendored/brepjs/2d/blueprints/lib.d.ts +0 -73
  572. package/dist/vendored/brepjs/2d/blueprints/lib.d.ts.map +0 -1
  573. package/dist/vendored/brepjs/2d/blueprints/lib.js +0 -103
  574. package/dist/vendored/brepjs/2d/blueprints/lib.js.map +0 -1
  575. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts +0 -31
  576. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts.map +0 -1
  577. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js +0 -226
  578. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js.map +0 -1
  579. package/dist/vendored/brepjs/2d/blueprints/svg.d.ts +0 -22
  580. package/dist/vendored/brepjs/2d/blueprints/svg.d.ts.map +0 -1
  581. package/dist/vendored/brepjs/2d/blueprints/svg.js +0 -30
  582. package/dist/vendored/brepjs/2d/blueprints/svg.js.map +0 -1
  583. package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts +0 -124
  584. package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts.map +0 -1
  585. package/dist/vendored/brepjs/2d/curve2dGeometryFns.js +0 -235
  586. package/dist/vendored/brepjs/2d/curve2dGeometryFns.js.map +0 -1
  587. package/dist/vendored/brepjs/2d/curves.d.ts +0 -45
  588. package/dist/vendored/brepjs/2d/curves.d.ts.map +0 -1
  589. package/dist/vendored/brepjs/2d/curves.js +0 -139
  590. package/dist/vendored/brepjs/2d/curves.js.map +0 -1
  591. package/dist/vendored/brepjs/2d/lib/approximations.d.ts +0 -47
  592. package/dist/vendored/brepjs/2d/lib/approximations.d.ts.map +0 -1
  593. package/dist/vendored/brepjs/2d/lib/approximations.js +0 -82
  594. package/dist/vendored/brepjs/2d/lib/approximations.js.map +0 -1
  595. package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts +0 -39
  596. package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts.map +0 -1
  597. package/dist/vendored/brepjs/2d/lib/boundingBox2d.js +0 -88
  598. package/dist/vendored/brepjs/2d/lib/boundingBox2d.js.map +0 -1
  599. package/dist/vendored/brepjs/2d/lib/curve2D.d.ts +0 -82
  600. package/dist/vendored/brepjs/2d/lib/curve2D.d.ts.map +0 -1
  601. package/dist/vendored/brepjs/2d/lib/curve2D.js +0 -258
  602. package/dist/vendored/brepjs/2d/lib/curve2D.js.map +0 -1
  603. package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts +0 -53
  604. package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts.map +0 -1
  605. package/dist/vendored/brepjs/2d/lib/curve2dFns.js +0 -69
  606. package/dist/vendored/brepjs/2d/lib/curve2dFns.js.map +0 -1
  607. package/dist/vendored/brepjs/2d/lib/customCorners.d.ts +0 -29
  608. package/dist/vendored/brepjs/2d/lib/customCorners.d.ts.map +0 -1
  609. package/dist/vendored/brepjs/2d/lib/customCorners.js +0 -237
  610. package/dist/vendored/brepjs/2d/lib/customCorners.js.map +0 -1
  611. package/dist/vendored/brepjs/2d/lib/definitions.d.ts +0 -12
  612. package/dist/vendored/brepjs/2d/lib/definitions.d.ts.map +0 -1
  613. package/dist/vendored/brepjs/2d/lib/definitions.js +0 -19
  614. package/dist/vendored/brepjs/2d/lib/definitions.js.map +0 -1
  615. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts +0 -21
  616. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts.map +0 -1
  617. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js +0 -71
  618. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js.map +0 -1
  619. package/dist/vendored/brepjs/2d/lib/index.d.ts +0 -14
  620. package/dist/vendored/brepjs/2d/lib/index.d.ts.map +0 -1
  621. package/dist/vendored/brepjs/2d/lib/index.js +0 -14
  622. package/dist/vendored/brepjs/2d/lib/index.js.map +0 -1
  623. package/dist/vendored/brepjs/2d/lib/intersections.d.ts +0 -34
  624. package/dist/vendored/brepjs/2d/lib/intersections.d.ts.map +0 -1
  625. package/dist/vendored/brepjs/2d/lib/intersections.js +0 -77
  626. package/dist/vendored/brepjs/2d/lib/intersections.js.map +0 -1
  627. package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts +0 -63
  628. package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts.map +0 -1
  629. package/dist/vendored/brepjs/2d/lib/makeCurves.js +0 -117
  630. package/dist/vendored/brepjs/2d/lib/makeCurves.js.map +0 -1
  631. package/dist/vendored/brepjs/2d/lib/offset.d.ts +0 -30
  632. package/dist/vendored/brepjs/2d/lib/offset.d.ts.map +0 -1
  633. package/dist/vendored/brepjs/2d/lib/offset.js +0 -109
  634. package/dist/vendored/brepjs/2d/lib/offset.js.map +0 -1
  635. package/dist/vendored/brepjs/2d/lib/precision.d.ts +0 -12
  636. package/dist/vendored/brepjs/2d/lib/precision.d.ts.map +0 -1
  637. package/dist/vendored/brepjs/2d/lib/precision.js +0 -12
  638. package/dist/vendored/brepjs/2d/lib/precision.js.map +0 -1
  639. package/dist/vendored/brepjs/2d/lib/stitching.d.ts +0 -15
  640. package/dist/vendored/brepjs/2d/lib/stitching.d.ts.map +0 -1
  641. package/dist/vendored/brepjs/2d/lib/stitching.js +0 -67
  642. package/dist/vendored/brepjs/2d/lib/stitching.js.map +0 -1
  643. package/dist/vendored/brepjs/2d/lib/svgPath.d.ts +0 -4
  644. package/dist/vendored/brepjs/2d/lib/svgPath.d.ts.map +0 -1
  645. package/dist/vendored/brepjs/2d/lib/svgPath.js +0 -114
  646. package/dist/vendored/brepjs/2d/lib/svgPath.js.map +0 -1
  647. package/dist/vendored/brepjs/2d/lib/utils.d.ts +0 -11
  648. package/dist/vendored/brepjs/2d/lib/utils.d.ts.map +0 -1
  649. package/dist/vendored/brepjs/2d/lib/utils.js +0 -24
  650. package/dist/vendored/brepjs/2d/lib/utils.js.map +0 -1
  651. package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts +0 -19
  652. package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts.map +0 -1
  653. package/dist/vendored/brepjs/2d/lib/vectorOperations.js +0 -26
  654. package/dist/vendored/brepjs/2d/lib/vectorOperations.js.map +0 -1
  655. package/dist/vendored/brepjs/2d.d.ts +0 -26
  656. package/dist/vendored/brepjs/2d.d.ts.map +0 -1
  657. package/dist/vendored/brepjs/2d.js +0 -33
  658. package/dist/vendored/brepjs/2d.js.map +0 -1
  659. package/dist/vendored/brepjs/core/constants.d.ts +0 -7
  660. package/dist/vendored/brepjs/core/constants.d.ts.map +0 -1
  661. package/dist/vendored/brepjs/core/constants.js +0 -7
  662. package/dist/vendored/brepjs/core/constants.js.map +0 -1
  663. package/dist/vendored/brepjs/core/curve2dHandle.d.ts +0 -35
  664. package/dist/vendored/brepjs/core/curve2dHandle.d.ts.map +0 -1
  665. package/dist/vendored/brepjs/core/curve2dHandle.js +0 -48
  666. package/dist/vendored/brepjs/core/curve2dHandle.js.map +0 -1
  667. package/dist/vendored/brepjs/core/dimensionTypes.d.ts +0 -61
  668. package/dist/vendored/brepjs/core/dimensionTypes.d.ts.map +0 -1
  669. package/dist/vendored/brepjs/core/dimensionTypes.js +0 -54
  670. package/dist/vendored/brepjs/core/dimensionTypes.js.map +0 -1
  671. package/dist/vendored/brepjs/core/disposal.d.ts +0 -136
  672. package/dist/vendored/brepjs/core/disposal.d.ts.map +0 -1
  673. package/dist/vendored/brepjs/core/disposal.js +0 -441
  674. package/dist/vendored/brepjs/core/disposal.js.map +0 -1
  675. package/dist/vendored/brepjs/core/errors.d.ts +0 -191
  676. package/dist/vendored/brepjs/core/errors.d.ts.map +0 -1
  677. package/dist/vendored/brepjs/core/errors.js +0 -238
  678. package/dist/vendored/brepjs/core/errors.js.map +0 -1
  679. package/dist/vendored/brepjs/core/kernelBoundary.d.ts +0 -40
  680. package/dist/vendored/brepjs/core/kernelBoundary.d.ts.map +0 -1
  681. package/dist/vendored/brepjs/core/kernelBoundary.js +0 -99
  682. package/dist/vendored/brepjs/core/kernelBoundary.js.map +0 -1
  683. package/dist/vendored/brepjs/core/kernelCall.d.ts +0 -48
  684. package/dist/vendored/brepjs/core/kernelCall.d.ts.map +0 -1
  685. package/dist/vendored/brepjs/core/kernelCall.js +0 -154
  686. package/dist/vendored/brepjs/core/kernelCall.js.map +0 -1
  687. package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts +0 -17
  688. package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts.map +0 -1
  689. package/dist/vendored/brepjs/core/kernelErrorTranslation.js +0 -98
  690. package/dist/vendored/brepjs/core/kernelErrorTranslation.js.map +0 -1
  691. package/dist/vendored/brepjs/core/planeOps.d.ts +0 -62
  692. package/dist/vendored/brepjs/core/planeOps.d.ts.map +0 -1
  693. package/dist/vendored/brepjs/core/planeOps.js +0 -148
  694. package/dist/vendored/brepjs/core/planeOps.js.map +0 -1
  695. package/dist/vendored/brepjs/core/planeTypes.d.ts +0 -22
  696. package/dist/vendored/brepjs/core/planeTypes.d.ts.map +0 -1
  697. package/dist/vendored/brepjs/core/planeTypes.js +0 -6
  698. package/dist/vendored/brepjs/core/planeTypes.js.map +0 -1
  699. package/dist/vendored/brepjs/core/result.d.ts +0 -85
  700. package/dist/vendored/brepjs/core/result.d.ts.map +0 -1
  701. package/dist/vendored/brepjs/core/result.js +0 -212
  702. package/dist/vendored/brepjs/core/result.js.map +0 -1
  703. package/dist/vendored/brepjs/core/shapeTypeCache.d.ts +0 -27
  704. package/dist/vendored/brepjs/core/shapeTypeCache.d.ts.map +0 -1
  705. package/dist/vendored/brepjs/core/shapeTypeCache.js +0 -40
  706. package/dist/vendored/brepjs/core/shapeTypeCache.js.map +0 -1
  707. package/dist/vendored/brepjs/core/shapeTypes.d.ts +0 -199
  708. package/dist/vendored/brepjs/core/shapeTypes.d.ts.map +0 -1
  709. package/dist/vendored/brepjs/core/shapeTypes.js +0 -267
  710. package/dist/vendored/brepjs/core/shapeTypes.js.map +0 -1
  711. package/dist/vendored/brepjs/core/typeDiscriminants.d.ts +0 -25
  712. package/dist/vendored/brepjs/core/typeDiscriminants.d.ts.map +0 -1
  713. package/dist/vendored/brepjs/core/typeDiscriminants.js +0 -50
  714. package/dist/vendored/brepjs/core/typeDiscriminants.js.map +0 -1
  715. package/dist/vendored/brepjs/core/types.d.ts +0 -51
  716. package/dist/vendored/brepjs/core/types.d.ts.map +0 -1
  717. package/dist/vendored/brepjs/core/types.js +0 -35
  718. package/dist/vendored/brepjs/core/types.js.map +0 -1
  719. package/dist/vendored/brepjs/core/validityTypes.d.ts +0 -143
  720. package/dist/vendored/brepjs/core/validityTypes.d.ts.map +0 -1
  721. package/dist/vendored/brepjs/core/validityTypes.js +0 -174
  722. package/dist/vendored/brepjs/core/validityTypes.js.map +0 -1
  723. package/dist/vendored/brepjs/core/vecOps.d.ts +0 -53
  724. package/dist/vendored/brepjs/core/vecOps.d.ts.map +0 -1
  725. package/dist/vendored/brepjs/core/vecOps.js +0 -131
  726. package/dist/vendored/brepjs/core/vecOps.js.map +0 -1
  727. package/dist/vendored/brepjs/core.d.ts +0 -17
  728. package/dist/vendored/brepjs/core.d.ts.map +0 -1
  729. package/dist/vendored/brepjs/core.js +0 -13
  730. package/dist/vendored/brepjs/core.js.map +0 -1
  731. package/dist/vendored/brepjs/gear/gearFns.d.ts +0 -148
  732. package/dist/vendored/brepjs/gear/gearFns.d.ts.map +0 -1
  733. package/dist/vendored/brepjs/gear/gearFns.js +0 -479
  734. package/dist/vendored/brepjs/gear/gearFns.js.map +0 -1
  735. package/dist/vendored/brepjs/gear/gearMath.d.ts +0 -89
  736. package/dist/vendored/brepjs/gear/gearMath.d.ts.map +0 -1
  737. package/dist/vendored/brepjs/gear/gearMath.js +0 -195
  738. package/dist/vendored/brepjs/gear/gearMath.js.map +0 -1
  739. package/dist/vendored/brepjs/gear/gearProfile.d.ts +0 -17
  740. package/dist/vendored/brepjs/gear/gearProfile.d.ts.map +0 -1
  741. package/dist/vendored/brepjs/gear/gearProfile.js +0 -159
  742. package/dist/vendored/brepjs/gear/gearProfile.js.map +0 -1
  743. package/dist/vendored/brepjs/gear/index.d.ts +0 -4
  744. package/dist/vendored/brepjs/gear/index.d.ts.map +0 -1
  745. package/dist/vendored/brepjs/gear/index.js +0 -4
  746. package/dist/vendored/brepjs/gear/index.js.map +0 -1
  747. package/dist/vendored/brepjs/index.d.ts +0 -152
  748. package/dist/vendored/brepjs/index.d.ts.map +0 -1
  749. package/dist/vendored/brepjs/index.js +0 -195
  750. package/dist/vendored/brepjs/index.js.map +0 -1
  751. package/dist/vendored/brepjs/io/dxfExportFns.d.ts +0 -74
  752. package/dist/vendored/brepjs/io/dxfExportFns.d.ts.map +0 -1
  753. package/dist/vendored/brepjs/io/dxfExportFns.js +0 -134
  754. package/dist/vendored/brepjs/io/dxfExportFns.js.map +0 -1
  755. package/dist/vendored/brepjs/io/dxfImportFns.d.ts +0 -20
  756. package/dist/vendored/brepjs/io/dxfImportFns.d.ts.map +0 -1
  757. package/dist/vendored/brepjs/io/dxfImportFns.js +0 -132
  758. package/dist/vendored/brepjs/io/dxfImportFns.js.map +0 -1
  759. package/dist/vendored/brepjs/io/gltfExportFns.d.ts +0 -97
  760. package/dist/vendored/brepjs/io/gltfExportFns.d.ts.map +0 -1
  761. package/dist/vendored/brepjs/io/gltfExportFns.js +0 -460
  762. package/dist/vendored/brepjs/io/gltfExportFns.js.map +0 -1
  763. package/dist/vendored/brepjs/io/gltfImportFns.d.ts +0 -21
  764. package/dist/vendored/brepjs/io/gltfImportFns.d.ts.map +0 -1
  765. package/dist/vendored/brepjs/io/gltfImportFns.js +0 -33
  766. package/dist/vendored/brepjs/io/gltfImportFns.js.map +0 -1
  767. package/dist/vendored/brepjs/io/importFns.d.ts +0 -56
  768. package/dist/vendored/brepjs/io/importFns.d.ts.map +0 -1
  769. package/dist/vendored/brepjs/io/importFns.js +0 -108
  770. package/dist/vendored/brepjs/io/importFns.js.map +0 -1
  771. package/dist/vendored/brepjs/io/ioUtils.d.ts +0 -22
  772. package/dist/vendored/brepjs/io/ioUtils.d.ts.map +0 -1
  773. package/dist/vendored/brepjs/io/ioUtils.js +0 -56
  774. package/dist/vendored/brepjs/io/ioUtils.js.map +0 -1
  775. package/dist/vendored/brepjs/io/objExportFns.d.ts +0 -23
  776. package/dist/vendored/brepjs/io/objExportFns.d.ts.map +0 -1
  777. package/dist/vendored/brepjs/io/objExportFns.js +0 -67
  778. package/dist/vendored/brepjs/io/objExportFns.js.map +0 -1
  779. package/dist/vendored/brepjs/io/objImportFns.d.ts +0 -26
  780. package/dist/vendored/brepjs/io/objImportFns.d.ts.map +0 -1
  781. package/dist/vendored/brepjs/io/objImportFns.js +0 -96
  782. package/dist/vendored/brepjs/io/objImportFns.js.map +0 -1
  783. package/dist/vendored/brepjs/io/stepConfigFns.d.ts +0 -30
  784. package/dist/vendored/brepjs/io/stepConfigFns.d.ts.map +0 -1
  785. package/dist/vendored/brepjs/io/stepConfigFns.js +0 -30
  786. package/dist/vendored/brepjs/io/stepConfigFns.js.map +0 -1
  787. package/dist/vendored/brepjs/io/svgImportFns.d.ts +0 -58
  788. package/dist/vendored/brepjs/io/svgImportFns.d.ts.map +0 -1
  789. package/dist/vendored/brepjs/io/svgImportFns.js +0 -394
  790. package/dist/vendored/brepjs/io/svgImportFns.js.map +0 -1
  791. package/dist/vendored/brepjs/io/threemfExportFns.d.ts +0 -48
  792. package/dist/vendored/brepjs/io/threemfExportFns.d.ts.map +0 -1
  793. package/dist/vendored/brepjs/io/threemfExportFns.js +0 -345
  794. package/dist/vendored/brepjs/io/threemfExportFns.js.map +0 -1
  795. package/dist/vendored/brepjs/io/threemfImportFns.d.ts +0 -22
  796. package/dist/vendored/brepjs/io/threemfImportFns.d.ts.map +0 -1
  797. package/dist/vendored/brepjs/io/threemfImportFns.js +0 -350
  798. package/dist/vendored/brepjs/io/threemfImportFns.js.map +0 -1
  799. package/dist/vendored/brepjs/io.d.ts +0 -17
  800. package/dist/vendored/brepjs/io.d.ts.map +0 -1
  801. package/dist/vendored/brepjs/io.js +0 -20
  802. package/dist/vendored/brepjs/io.js.map +0 -1
  803. package/dist/vendored/brepjs/kernel/capabilities.d.ts +0 -36
  804. package/dist/vendored/brepjs/kernel/capabilities.d.ts.map +0 -1
  805. package/dist/vendored/brepjs/kernel/capabilities.js +0 -35
  806. package/dist/vendored/brepjs/kernel/capabilities.js.map +0 -1
  807. package/dist/vendored/brepjs/kernel/geometry2d.d.ts +0 -96
  808. package/dist/vendored/brepjs/kernel/geometry2d.d.ts.map +0 -1
  809. package/dist/vendored/brepjs/kernel/geometry2d.js +0 -885
  810. package/dist/vendored/brepjs/kernel/geometry2d.js.map +0 -1
  811. package/dist/vendored/brepjs/kernel/hullGeometry.d.ts +0 -23
  812. package/dist/vendored/brepjs/kernel/hullGeometry.d.ts.map +0 -1
  813. package/dist/vendored/brepjs/kernel/hullGeometry.js +0 -312
  814. package/dist/vendored/brepjs/kernel/hullGeometry.js.map +0 -1
  815. package/dist/vendored/brepjs/kernel/index.d.ts +0 -73
  816. package/dist/vendored/brepjs/kernel/index.d.ts.map +0 -1
  817. package/dist/vendored/brepjs/kernel/index.js +0 -161
  818. package/dist/vendored/brepjs/kernel/index.js.map +0 -1
  819. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts +0 -44
  820. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts.map +0 -1
  821. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js +0 -11
  822. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js.map +0 -1
  823. package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts +0 -67
  824. package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts.map +0 -1
  825. package/dist/vendored/brepjs/kernel/interfaces/builderOps.js +0 -12
  826. package/dist/vendored/brepjs/kernel/interfaces/builderOps.js.map +0 -1
  827. package/dist/vendored/brepjs/kernel/interfaces/core.d.ts +0 -46
  828. package/dist/vendored/brepjs/kernel/interfaces/core.d.ts.map +0 -1
  829. package/dist/vendored/brepjs/kernel/interfaces/core.js +0 -11
  830. package/dist/vendored/brepjs/kernel/interfaces/core.js.map +0 -1
  831. package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts +0 -53
  832. package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts.map +0 -1
  833. package/dist/vendored/brepjs/kernel/interfaces/curveOps.js +0 -12
  834. package/dist/vendored/brepjs/kernel/interfaces/curveOps.js.map +0 -1
  835. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts +0 -32
  836. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts.map +0 -1
  837. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js +0 -14
  838. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js.map +0 -1
  839. package/dist/vendored/brepjs/kernel/interfaces/index.d.ts +0 -43
  840. package/dist/vendored/brepjs/kernel/interfaces/index.d.ts.map +0 -1
  841. package/dist/vendored/brepjs/kernel/interfaces/index.js +0 -12
  842. package/dist/vendored/brepjs/kernel/interfaces/index.js.map +0 -1
  843. package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts +0 -65
  844. package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts.map +0 -1
  845. package/dist/vendored/brepjs/kernel/interfaces/ioOps.js +0 -9
  846. package/dist/vendored/brepjs/kernel/interfaces/ioOps.js.map +0 -1
  847. package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts +0 -55
  848. package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts.map +0 -1
  849. package/dist/vendored/brepjs/kernel/interfaces/measureOps.js +0 -9
  850. package/dist/vendored/brepjs/kernel/interfaces/measureOps.js.map +0 -1
  851. package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts +0 -25
  852. package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts.map +0 -1
  853. package/dist/vendored/brepjs/kernel/interfaces/meshOps.js +0 -8
  854. package/dist/vendored/brepjs/kernel/interfaces/meshOps.js.map +0 -1
  855. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts +0 -53
  856. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts.map +0 -1
  857. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js +0 -10
  858. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js.map +0 -1
  859. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts +0 -22
  860. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts.map +0 -1
  861. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js +0 -11
  862. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js.map +0 -1
  863. package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts +0 -43
  864. package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts.map +0 -1
  865. package/dist/vendored/brepjs/kernel/interfaces/repairOps.js +0 -9
  866. package/dist/vendored/brepjs/kernel/interfaces/repairOps.js.map +0 -1
  867. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts +0 -72
  868. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts.map +0 -1
  869. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js +0 -13
  870. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js.map +0 -1
  871. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts +0 -73
  872. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts.map +0 -1
  873. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js +0 -11
  874. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js.map +0 -1
  875. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts +0 -62
  876. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts.map +0 -1
  877. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js +0 -9
  878. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js.map +0 -1
  879. package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts +0 -80
  880. package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts.map +0 -1
  881. package/dist/vendored/brepjs/kernel/interfaces/transformOps.js +0 -11
  882. package/dist/vendored/brepjs/kernel/interfaces/transformOps.js.map +0 -1
  883. package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts +0 -145
  884. package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts.map +0 -1
  885. package/dist/vendored/brepjs/kernel/kernel2dTypes.js +0 -18
  886. package/dist/vendored/brepjs/kernel/kernel2dTypes.js.map +0 -1
  887. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts +0 -41
  888. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts.map +0 -1
  889. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js +0 -2
  890. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js.map +0 -1
  891. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts +0 -17
  892. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts.map +0 -1
  893. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js +0 -75
  894. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js.map +0 -1
  895. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts +0 -36
  896. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts.map +0 -1
  897. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js +0 -116
  898. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js.map +0 -1
  899. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts +0 -43
  900. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts.map +0 -1
  901. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js +0 -292
  902. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js.map +0 -1
  903. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts +0 -34
  904. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts.map +0 -1
  905. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js +0 -164
  906. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js.map +0 -1
  907. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts +0 -26
  908. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts.map +0 -1
  909. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js +0 -256
  910. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js.map +0 -1
  911. package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts +0 -42
  912. package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts.map +0 -1
  913. package/dist/vendored/brepjs/kernel/occtWasm/helpers.js +0 -146
  914. package/dist/vendored/brepjs/kernel/occtWasm/helpers.js.map +0 -1
  915. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts +0 -17
  916. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts.map +0 -1
  917. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js +0 -55
  918. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js.map +0 -1
  919. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts +0 -58
  920. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts.map +0 -1
  921. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js +0 -303
  922. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js.map +0 -1
  923. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts +0 -113
  924. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts.map +0 -1
  925. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js +0 -731
  926. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js.map +0 -1
  927. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts +0 -62
  928. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts.map +0 -1
  929. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js +0 -338
  930. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js.map +0 -1
  931. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts +0 -12
  932. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts.map +0 -1
  933. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js +0 -120
  934. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js.map +0 -1
  935. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts +0 -20
  936. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts.map +0 -1
  937. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js +0 -187
  938. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js.map +0 -1
  939. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts +0 -513
  940. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts.map +0 -1
  941. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js +0 -1016
  942. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js.map +0 -1
  943. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts +0 -332
  944. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts.map +0 -1
  945. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js +0 -10
  946. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js.map +0 -1
  947. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts +0 -16
  948. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts.map +0 -1
  949. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js +0 -64
  950. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js.map +0 -1
  951. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts +0 -16
  952. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts.map +0 -1
  953. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js +0 -38
  954. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js.map +0 -1
  955. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts +0 -56
  956. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts.map +0 -1
  957. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js +0 -247
  958. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js.map +0 -1
  959. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts +0 -56
  960. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts.map +0 -1
  961. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js +0 -235
  962. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js.map +0 -1
  963. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts +0 -25
  964. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts.map +0 -1
  965. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js +0 -127
  966. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js.map +0 -1
  967. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts +0 -40
  968. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts.map +0 -1
  969. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js +0 -275
  970. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js.map +0 -1
  971. package/dist/vendored/brepjs/kernel/quality.d.ts +0 -28
  972. package/dist/vendored/brepjs/kernel/quality.d.ts.map +0 -1
  973. package/dist/vendored/brepjs/kernel/quality.js +0 -40
  974. package/dist/vendored/brepjs/kernel/quality.js.map +0 -1
  975. package/dist/vendored/brepjs/kernel/solverAdapter.d.ts +0 -50
  976. package/dist/vendored/brepjs/kernel/solverAdapter.d.ts.map +0 -1
  977. package/dist/vendored/brepjs/kernel/solverAdapter.js +0 -330
  978. package/dist/vendored/brepjs/kernel/solverAdapter.js.map +0 -1
  979. package/dist/vendored/brepjs/kernel/stlBuilder.d.ts +0 -21
  980. package/dist/vendored/brepjs/kernel/stlBuilder.d.ts.map +0 -1
  981. package/dist/vendored/brepjs/kernel/stlBuilder.js +0 -106
  982. package/dist/vendored/brepjs/kernel/stlBuilder.js.map +0 -1
  983. package/dist/vendored/brepjs/kernel/types.d.ts +0 -214
  984. package/dist/vendored/brepjs/kernel/types.d.ts.map +0 -1
  985. package/dist/vendored/brepjs/kernel/types.js +0 -22
  986. package/dist/vendored/brepjs/kernel/types.js.map +0 -1
  987. package/dist/vendored/brepjs/kernel/unsupported.d.ts +0 -15
  988. package/dist/vendored/brepjs/kernel/unsupported.d.ts.map +0 -1
  989. package/dist/vendored/brepjs/kernel/unsupported.js +0 -25
  990. package/dist/vendored/brepjs/kernel/unsupported.js.map +0 -1
  991. package/dist/vendored/brepjs/measurement/interferenceFns.d.ts +0 -68
  992. package/dist/vendored/brepjs/measurement/interferenceFns.d.ts.map +0 -1
  993. package/dist/vendored/brepjs/measurement/interferenceFns.js +0 -102
  994. package/dist/vendored/brepjs/measurement/interferenceFns.js.map +0 -1
  995. package/dist/vendored/brepjs/measurement/measureCache.d.ts +0 -20
  996. package/dist/vendored/brepjs/measurement/measureCache.d.ts.map +0 -1
  997. package/dist/vendored/brepjs/measurement/measureCache.js +0 -28
  998. package/dist/vendored/brepjs/measurement/measureCache.js.map +0 -1
  999. package/dist/vendored/brepjs/measurement/measureFns.d.ts +0 -92
  1000. package/dist/vendored/brepjs/measurement/measureFns.d.ts.map +0 -1
  1001. package/dist/vendored/brepjs/measurement/measureFns.js +0 -239
  1002. package/dist/vendored/brepjs/measurement/measureFns.js.map +0 -1
  1003. package/dist/vendored/brepjs/measurement/measureTypes.d.ts +0 -35
  1004. package/dist/vendored/brepjs/measurement/measureTypes.d.ts.map +0 -1
  1005. package/dist/vendored/brepjs/measurement/measureTypes.js +0 -7
  1006. package/dist/vendored/brepjs/measurement/measureTypes.js.map +0 -1
  1007. package/dist/vendored/brepjs/measurement.d.ts +0 -5
  1008. package/dist/vendored/brepjs/measurement.d.ts.map +0 -1
  1009. package/dist/vendored/brepjs/measurement.js +0 -5
  1010. package/dist/vendored/brepjs/measurement.js.map +0 -1
  1011. package/dist/vendored/brepjs/ns/booleans.d.ts +0 -11
  1012. package/dist/vendored/brepjs/ns/booleans.d.ts.map +0 -1
  1013. package/dist/vendored/brepjs/ns/booleans.js +0 -11
  1014. package/dist/vendored/brepjs/ns/booleans.js.map +0 -1
  1015. package/dist/vendored/brepjs/ns/construction.d.ts +0 -10
  1016. package/dist/vendored/brepjs/ns/construction.d.ts.map +0 -1
  1017. package/dist/vendored/brepjs/ns/construction.js +0 -10
  1018. package/dist/vendored/brepjs/ns/construction.js.map +0 -1
  1019. package/dist/vendored/brepjs/ns/ioNs.d.ts +0 -18
  1020. package/dist/vendored/brepjs/ns/ioNs.d.ts.map +0 -1
  1021. package/dist/vendored/brepjs/ns/ioNs.js +0 -20
  1022. package/dist/vendored/brepjs/ns/ioNs.js.map +0 -1
  1023. package/dist/vendored/brepjs/ns/measurement.d.ts +0 -6
  1024. package/dist/vendored/brepjs/ns/measurement.d.ts.map +0 -1
  1025. package/dist/vendored/brepjs/ns/measurement.js +0 -6
  1026. package/dist/vendored/brepjs/ns/measurement.js.map +0 -1
  1027. package/dist/vendored/brepjs/ns/modifiers.d.ts +0 -6
  1028. package/dist/vendored/brepjs/ns/modifiers.d.ts.map +0 -1
  1029. package/dist/vendored/brepjs/ns/modifiers.js +0 -6
  1030. package/dist/vendored/brepjs/ns/modifiers.js.map +0 -1
  1031. package/dist/vendored/brepjs/ns/patterns.d.ts +0 -5
  1032. package/dist/vendored/brepjs/ns/patterns.d.ts.map +0 -1
  1033. package/dist/vendored/brepjs/ns/patterns.js +0 -5
  1034. package/dist/vendored/brepjs/ns/patterns.js.map +0 -1
  1035. package/dist/vendored/brepjs/ns/primitives.d.ts +0 -7
  1036. package/dist/vendored/brepjs/ns/primitives.d.ts.map +0 -1
  1037. package/dist/vendored/brepjs/ns/primitives.js +0 -7
  1038. package/dist/vendored/brepjs/ns/primitives.js.map +0 -1
  1039. package/dist/vendored/brepjs/ns/query.d.ts +0 -6
  1040. package/dist/vendored/brepjs/ns/query.d.ts.map +0 -1
  1041. package/dist/vendored/brepjs/ns/query.js +0 -6
  1042. package/dist/vendored/brepjs/ns/query.js.map +0 -1
  1043. package/dist/vendored/brepjs/ns/transforms.d.ts +0 -5
  1044. package/dist/vendored/brepjs/ns/transforms.d.ts.map +0 -1
  1045. package/dist/vendored/brepjs/ns/transforms.js +0 -5
  1046. package/dist/vendored/brepjs/ns/transforms.js.map +0 -1
  1047. package/dist/vendored/brepjs/operations/api.d.ts +0 -39
  1048. package/dist/vendored/brepjs/operations/api.d.ts.map +0 -1
  1049. package/dist/vendored/brepjs/operations/api.js +0 -41
  1050. package/dist/vendored/brepjs/operations/api.js.map +0 -1
  1051. package/dist/vendored/brepjs/operations/assemblyFns.d.ts +0 -54
  1052. package/dist/vendored/brepjs/operations/assemblyFns.d.ts.map +0 -1
  1053. package/dist/vendored/brepjs/operations/assemblyFns.js +0 -91
  1054. package/dist/vendored/brepjs/operations/assemblyFns.js.map +0 -1
  1055. package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts +0 -43
  1056. package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts.map +0 -1
  1057. package/dist/vendored/brepjs/operations/compoundOpsFns.js +0 -368
  1058. package/dist/vendored/brepjs/operations/compoundOpsFns.js.map +0 -1
  1059. package/dist/vendored/brepjs/operations/convexHullFns.d.ts +0 -27
  1060. package/dist/vendored/brepjs/operations/convexHullFns.d.ts.map +0 -1
  1061. package/dist/vendored/brepjs/operations/convexHullFns.js +0 -50
  1062. package/dist/vendored/brepjs/operations/convexHullFns.js.map +0 -1
  1063. package/dist/vendored/brepjs/operations/dhFns.d.ts +0 -47
  1064. package/dist/vendored/brepjs/operations/dhFns.d.ts.map +0 -1
  1065. package/dist/vendored/brepjs/operations/dhFns.js +0 -53
  1066. package/dist/vendored/brepjs/operations/dhFns.js.map +0 -1
  1067. package/dist/vendored/brepjs/operations/exporterFns.d.ts +0 -47
  1068. package/dist/vendored/brepjs/operations/exporterFns.d.ts.map +0 -1
  1069. package/dist/vendored/brepjs/operations/exporterFns.js +0 -66
  1070. package/dist/vendored/brepjs/operations/exporterFns.js.map +0 -1
  1071. package/dist/vendored/brepjs/operations/exporterUtils.d.ts +0 -6
  1072. package/dist/vendored/brepjs/operations/exporterUtils.d.ts.map +0 -1
  1073. package/dist/vendored/brepjs/operations/exporterUtils.js +0 -5
  1074. package/dist/vendored/brepjs/operations/exporterUtils.js.map +0 -1
  1075. package/dist/vendored/brepjs/operations/exporters.d.ts +0 -59
  1076. package/dist/vendored/brepjs/operations/exporters.d.ts.map +0 -1
  1077. package/dist/vendored/brepjs/operations/exporters.js +0 -74
  1078. package/dist/vendored/brepjs/operations/exporters.js.map +0 -1
  1079. package/dist/vendored/brepjs/operations/extrudeFns.d.ts +0 -47
  1080. package/dist/vendored/brepjs/operations/extrudeFns.d.ts.map +0 -1
  1081. package/dist/vendored/brepjs/operations/extrudeFns.js +0 -119
  1082. package/dist/vendored/brepjs/operations/extrudeFns.js.map +0 -1
  1083. package/dist/vendored/brepjs/operations/extrudeUtils.d.ts +0 -63
  1084. package/dist/vendored/brepjs/operations/extrudeUtils.d.ts.map +0 -1
  1085. package/dist/vendored/brepjs/operations/extrudeUtils.js +0 -33
  1086. package/dist/vendored/brepjs/operations/extrudeUtils.js.map +0 -1
  1087. package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts +0 -6
  1088. package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts.map +0 -1
  1089. package/dist/vendored/brepjs/operations/guidedSweepFns.js +0 -6
  1090. package/dist/vendored/brepjs/operations/guidedSweepFns.js.map +0 -1
  1091. package/dist/vendored/brepjs/operations/historyFns.d.ts +0 -83
  1092. package/dist/vendored/brepjs/operations/historyFns.d.ts.map +0 -1
  1093. package/dist/vendored/brepjs/operations/historyFns.js +0 -256
  1094. package/dist/vendored/brepjs/operations/historyFns.js.map +0 -1
  1095. package/dist/vendored/brepjs/operations/ikFns.d.ts +0 -74
  1096. package/dist/vendored/brepjs/operations/ikFns.d.ts.map +0 -1
  1097. package/dist/vendored/brepjs/operations/ikFns.js +0 -320
  1098. package/dist/vendored/brepjs/operations/ikFns.js.map +0 -1
  1099. package/dist/vendored/brepjs/operations/instanceFns.d.ts +0 -76
  1100. package/dist/vendored/brepjs/operations/instanceFns.d.ts.map +0 -1
  1101. package/dist/vendored/brepjs/operations/instanceFns.js +0 -128
  1102. package/dist/vendored/brepjs/operations/instanceFns.js.map +0 -1
  1103. package/dist/vendored/brepjs/operations/jointFns.d.ts +0 -176
  1104. package/dist/vendored/brepjs/operations/jointFns.d.ts.map +0 -1
  1105. package/dist/vendored/brepjs/operations/jointFns.js +0 -298
  1106. package/dist/vendored/brepjs/operations/jointFns.js.map +0 -1
  1107. package/dist/vendored/brepjs/operations/loftFns.d.ts +0 -60
  1108. package/dist/vendored/brepjs/operations/loftFns.d.ts.map +0 -1
  1109. package/dist/vendored/brepjs/operations/loftFns.js +0 -112
  1110. package/dist/vendored/brepjs/operations/loftFns.js.map +0 -1
  1111. package/dist/vendored/brepjs/operations/mateFns.d.ts +0 -53
  1112. package/dist/vendored/brepjs/operations/mateFns.d.ts.map +0 -1
  1113. package/dist/vendored/brepjs/operations/mateFns.js +0 -142
  1114. package/dist/vendored/brepjs/operations/mateFns.js.map +0 -1
  1115. package/dist/vendored/brepjs/operations/multiSweepFns.d.ts +0 -6
  1116. package/dist/vendored/brepjs/operations/multiSweepFns.d.ts.map +0 -1
  1117. package/dist/vendored/brepjs/operations/multiSweepFns.js +0 -6
  1118. package/dist/vendored/brepjs/operations/multiSweepFns.js.map +0 -1
  1119. package/dist/vendored/brepjs/operations/patternFns.d.ts +0 -46
  1120. package/dist/vendored/brepjs/operations/patternFns.d.ts.map +0 -1
  1121. package/dist/vendored/brepjs/operations/patternFns.js +0 -126
  1122. package/dist/vendored/brepjs/operations/patternFns.js.map +0 -1
  1123. package/dist/vendored/brepjs/operations/roofFns.d.ts +0 -25
  1124. package/dist/vendored/brepjs/operations/roofFns.d.ts.map +0 -1
  1125. package/dist/vendored/brepjs/operations/roofFns.js +0 -250
  1126. package/dist/vendored/brepjs/operations/roofFns.js.map +0 -1
  1127. package/dist/vendored/brepjs/operations/straightSkeleton.d.ts +0 -29
  1128. package/dist/vendored/brepjs/operations/straightSkeleton.d.ts.map +0 -1
  1129. package/dist/vendored/brepjs/operations/straightSkeleton.js +0 -440
  1130. package/dist/vendored/brepjs/operations/straightSkeleton.js.map +0 -1
  1131. package/dist/vendored/brepjs/operations/sweepFns.d.ts +0 -121
  1132. package/dist/vendored/brepjs/operations/sweepFns.d.ts.map +0 -1
  1133. package/dist/vendored/brepjs/operations/sweepFns.js +0 -438
  1134. package/dist/vendored/brepjs/operations/sweepFns.js.map +0 -1
  1135. package/dist/vendored/brepjs/operations/threadFns.d.ts +0 -57
  1136. package/dist/vendored/brepjs/operations/threadFns.d.ts.map +0 -1
  1137. package/dist/vendored/brepjs/operations/threadFns.js +0 -145
  1138. package/dist/vendored/brepjs/operations/threadFns.js.map +0 -1
  1139. package/dist/vendored/brepjs/operations/urdfFns.d.ts +0 -48
  1140. package/dist/vendored/brepjs/operations/urdfFns.d.ts.map +0 -1
  1141. package/dist/vendored/brepjs/operations/urdfFns.js +0 -171
  1142. package/dist/vendored/brepjs/operations/urdfFns.js.map +0 -1
  1143. package/dist/vendored/brepjs/operations.d.ts +0 -20
  1144. package/dist/vendored/brepjs/operations.d.ts.map +0 -1
  1145. package/dist/vendored/brepjs/operations.js +0 -26
  1146. package/dist/vendored/brepjs/operations.js.map +0 -1
  1147. package/dist/vendored/brepjs/projection/cameraFns.d.ts +0 -63
  1148. package/dist/vendored/brepjs/projection/cameraFns.d.ts.map +0 -1
  1149. package/dist/vendored/brepjs/projection/cameraFns.js +0 -89
  1150. package/dist/vendored/brepjs/projection/cameraFns.js.map +0 -1
  1151. package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts +0 -14
  1152. package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts.map +0 -1
  1153. package/dist/vendored/brepjs/projection/makeProjectedEdges.js +0 -111
  1154. package/dist/vendored/brepjs/projection/makeProjectedEdges.js.map +0 -1
  1155. package/dist/vendored/brepjs/projection/projectionPlanes.d.ts +0 -18
  1156. package/dist/vendored/brepjs/projection/projectionPlanes.d.ts.map +0 -1
  1157. package/dist/vendored/brepjs/projection/projectionPlanes.js +0 -23
  1158. package/dist/vendored/brepjs/projection/projectionPlanes.js.map +0 -1
  1159. package/dist/vendored/brepjs/projection.d.ts +0 -12
  1160. package/dist/vendored/brepjs/projection.d.ts.map +0 -1
  1161. package/dist/vendored/brepjs/projection.js +0 -12
  1162. package/dist/vendored/brepjs/projection.js.map +0 -1
  1163. package/dist/vendored/brepjs/query/cornerFinder.d.ts +0 -54
  1164. package/dist/vendored/brepjs/query/cornerFinder.d.ts.map +0 -1
  1165. package/dist/vendored/brepjs/query/cornerFinder.js +0 -73
  1166. package/dist/vendored/brepjs/query/cornerFinder.js.map +0 -1
  1167. package/dist/vendored/brepjs/query/directionUtils.d.ts +0 -9
  1168. package/dist/vendored/brepjs/query/directionUtils.d.ts.map +0 -1
  1169. package/dist/vendored/brepjs/query/directionUtils.js +0 -18
  1170. package/dist/vendored/brepjs/query/directionUtils.js.map +0 -1
  1171. package/dist/vendored/brepjs/query/edgeFinder.d.ts +0 -5
  1172. package/dist/vendored/brepjs/query/edgeFinder.d.ts.map +0 -1
  1173. package/dist/vendored/brepjs/query/edgeFinder.js +0 -5
  1174. package/dist/vendored/brepjs/query/edgeFinder.js.map +0 -1
  1175. package/dist/vendored/brepjs/query/faceFinder.d.ts +0 -5
  1176. package/dist/vendored/brepjs/query/faceFinder.d.ts.map +0 -1
  1177. package/dist/vendored/brepjs/query/faceFinder.js +0 -5
  1178. package/dist/vendored/brepjs/query/faceFinder.js.map +0 -1
  1179. package/dist/vendored/brepjs/query/finderCore.d.ts +0 -49
  1180. package/dist/vendored/brepjs/query/finderCore.d.ts.map +0 -1
  1181. package/dist/vendored/brepjs/query/finderCore.js +0 -120
  1182. package/dist/vendored/brepjs/query/finderCore.js.map +0 -1
  1183. package/dist/vendored/brepjs/query/finderFns.d.ts +0 -25
  1184. package/dist/vendored/brepjs/query/finderFns.d.ts.map +0 -1
  1185. package/dist/vendored/brepjs/query/finderFns.js +0 -25
  1186. package/dist/vendored/brepjs/query/finderFns.js.map +0 -1
  1187. package/dist/vendored/brepjs/query/helpers.d.ts +0 -11
  1188. package/dist/vendored/brepjs/query/helpers.d.ts.map +0 -1
  1189. package/dist/vendored/brepjs/query/helpers.js +0 -17
  1190. package/dist/vendored/brepjs/query/helpers.js.map +0 -1
  1191. package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts +0 -15
  1192. package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts.map +0 -1
  1193. package/dist/vendored/brepjs/query/shapeDistanceFilter.js +0 -21
  1194. package/dist/vendored/brepjs/query/shapeDistanceFilter.js.map +0 -1
  1195. package/dist/vendored/brepjs/query/shapeFinders.d.ts +0 -39
  1196. package/dist/vendored/brepjs/query/shapeFinders.d.ts.map +0 -1
  1197. package/dist/vendored/brepjs/query/shapeFinders.js +0 -82
  1198. package/dist/vendored/brepjs/query/shapeFinders.js.map +0 -1
  1199. package/dist/vendored/brepjs/query/vertexFinder.d.ts +0 -19
  1200. package/dist/vendored/brepjs/query/vertexFinder.d.ts.map +0 -1
  1201. package/dist/vendored/brepjs/query/vertexFinder.js +0 -73
  1202. package/dist/vendored/brepjs/query/vertexFinder.js.map +0 -1
  1203. package/dist/vendored/brepjs/query/wireFinder.d.ts +0 -5
  1204. package/dist/vendored/brepjs/query/wireFinder.d.ts.map +0 -1
  1205. package/dist/vendored/brepjs/query/wireFinder.js +0 -5
  1206. package/dist/vendored/brepjs/query/wireFinder.js.map +0 -1
  1207. package/dist/vendored/brepjs/query.d.ts +0 -6
  1208. package/dist/vendored/brepjs/query.d.ts.map +0 -1
  1209. package/dist/vendored/brepjs/query.js +0 -6
  1210. package/dist/vendored/brepjs/query.js.map +0 -1
  1211. package/dist/vendored/brepjs/result.d.ts +0 -7
  1212. package/dist/vendored/brepjs/result.d.ts.map +0 -1
  1213. package/dist/vendored/brepjs/result.js +0 -7
  1214. package/dist/vendored/brepjs/result.js.map +0 -1
  1215. package/dist/vendored/brepjs/shapeRef.d.ts +0 -13
  1216. package/dist/vendored/brepjs/shapeRef.d.ts.map +0 -1
  1217. package/dist/vendored/brepjs/shapeRef.js +0 -13
  1218. package/dist/vendored/brepjs/shapeRef.js.map +0 -1
  1219. package/dist/vendored/brepjs/sketching/cannedSketches.d.ts +0 -144
  1220. package/dist/vendored/brepjs/sketching/cannedSketches.d.ts.map +0 -1
  1221. package/dist/vendored/brepjs/sketching/cannedSketches.js +0 -327
  1222. package/dist/vendored/brepjs/sketching/cannedSketches.js.map +0 -1
  1223. package/dist/vendored/brepjs/sketching/compoundSketch.d.ts +0 -70
  1224. package/dist/vendored/brepjs/sketching/compoundSketch.d.ts.map +0 -1
  1225. package/dist/vendored/brepjs/sketching/compoundSketch.js +0 -87
  1226. package/dist/vendored/brepjs/sketching/compoundSketch.js.map +0 -1
  1227. package/dist/vendored/brepjs/sketching/draw3d.d.ts +0 -22
  1228. package/dist/vendored/brepjs/sketching/draw3d.d.ts.map +0 -1
  1229. package/dist/vendored/brepjs/sketching/draw3d.js +0 -150
  1230. package/dist/vendored/brepjs/sketching/draw3d.js.map +0 -1
  1231. package/dist/vendored/brepjs/sketching/drawFns.d.ts +0 -122
  1232. package/dist/vendored/brepjs/sketching/drawFns.d.ts.map +0 -1
  1233. package/dist/vendored/brepjs/sketching/drawFns.js +0 -129
  1234. package/dist/vendored/brepjs/sketching/drawFns.js.map +0 -1
  1235. package/dist/vendored/brepjs/sketching/drawing.d.ts +0 -128
  1236. package/dist/vendored/brepjs/sketching/drawing.d.ts.map +0 -1
  1237. package/dist/vendored/brepjs/sketching/drawing.js +0 -275
  1238. package/dist/vendored/brepjs/sketching/drawing.js.map +0 -1
  1239. package/dist/vendored/brepjs/sketching/drawingFactories.d.ts +0 -95
  1240. package/dist/vendored/brepjs/sketching/drawingFactories.d.ts.map +0 -1
  1241. package/dist/vendored/brepjs/sketching/drawingFactories.js +0 -125
  1242. package/dist/vendored/brepjs/sketching/drawingFactories.js.map +0 -1
  1243. package/dist/vendored/brepjs/sketching/drawingPen.d.ts +0 -35
  1244. package/dist/vendored/brepjs/sketching/drawingPen.d.ts.map +0 -1
  1245. package/dist/vendored/brepjs/sketching/drawingPen.js +0 -57
  1246. package/dist/vendored/brepjs/sketching/drawingPen.js.map +0 -1
  1247. package/dist/vendored/brepjs/sketching/faceSketcher.d.ts +0 -53
  1248. package/dist/vendored/brepjs/sketching/faceSketcher.d.ts.map +0 -1
  1249. package/dist/vendored/brepjs/sketching/faceSketcher.js +0 -167
  1250. package/dist/vendored/brepjs/sketching/faceSketcher.js.map +0 -1
  1251. package/dist/vendored/brepjs/sketching/shortcuts.d.ts +0 -16
  1252. package/dist/vendored/brepjs/sketching/shortcuts.d.ts.map +0 -1
  1253. package/dist/vendored/brepjs/sketching/shortcuts.js +0 -24
  1254. package/dist/vendored/brepjs/sketching/shortcuts.js.map +0 -1
  1255. package/dist/vendored/brepjs/sketching/sketch.d.ts +0 -157
  1256. package/dist/vendored/brepjs/sketching/sketch.d.ts.map +0 -1
  1257. package/dist/vendored/brepjs/sketching/sketch.js +0 -151
  1258. package/dist/vendored/brepjs/sketching/sketch.js.map +0 -1
  1259. package/dist/vendored/brepjs/sketching/sketchFns.d.ts +0 -89
  1260. package/dist/vendored/brepjs/sketching/sketchFns.d.ts.map +0 -1
  1261. package/dist/vendored/brepjs/sketching/sketchFns.js +0 -266
  1262. package/dist/vendored/brepjs/sketching/sketchFns.js.map +0 -1
  1263. package/dist/vendored/brepjs/sketching/sketcher.d.ts +0 -70
  1264. package/dist/vendored/brepjs/sketching/sketcher.d.ts.map +0 -1
  1265. package/dist/vendored/brepjs/sketching/sketcher.js +0 -181
  1266. package/dist/vendored/brepjs/sketching/sketcher.js.map +0 -1
  1267. package/dist/vendored/brepjs/sketching/sketches.d.ts +0 -70
  1268. package/dist/vendored/brepjs/sketching/sketches.d.ts.map +0 -1
  1269. package/dist/vendored/brepjs/sketching/sketches.js +0 -91
  1270. package/dist/vendored/brepjs/sketching/sketches.js.map +0 -1
  1271. package/dist/vendored/brepjs/sketching.d.ts +0 -28
  1272. package/dist/vendored/brepjs/sketching.d.ts.map +0 -1
  1273. package/dist/vendored/brepjs/sketching.js +0 -30
  1274. package/dist/vendored/brepjs/sketching.js.map +0 -1
  1275. package/dist/vendored/brepjs/text/fontRegistry.d.ts +0 -23
  1276. package/dist/vendored/brepjs/text/fontRegistry.d.ts.map +0 -1
  1277. package/dist/vendored/brepjs/text/fontRegistry.js +0 -61
  1278. package/dist/vendored/brepjs/text/fontRegistry.js.map +0 -1
  1279. package/dist/vendored/brepjs/text/sketchText.d.ts +0 -31
  1280. package/dist/vendored/brepjs/text/sketchText.d.ts.map +0 -1
  1281. package/dist/vendored/brepjs/text/sketchText.js +0 -30
  1282. package/dist/vendored/brepjs/text/sketchText.js.map +0 -1
  1283. package/dist/vendored/brepjs/text/textBlueprints.d.ts +0 -19
  1284. package/dist/vendored/brepjs/text/textBlueprints.d.ts.map +0 -1
  1285. package/dist/vendored/brepjs/text/textBlueprints.js +0 -61
  1286. package/dist/vendored/brepjs/text/textBlueprints.js.map +0 -1
  1287. package/dist/vendored/brepjs/text/textMetrics.d.ts +0 -40
  1288. package/dist/vendored/brepjs/text/textMetrics.d.ts.map +0 -1
  1289. package/dist/vendored/brepjs/text/textMetrics.js +0 -43
  1290. package/dist/vendored/brepjs/text/textMetrics.js.map +0 -1
  1291. package/dist/vendored/brepjs/text.d.ts +0 -13
  1292. package/dist/vendored/brepjs/text.d.ts.map +0 -1
  1293. package/dist/vendored/brepjs/text.js +0 -13
  1294. package/dist/vendored/brepjs/text.js.map +0 -1
  1295. package/dist/vendored/brepjs/topology/adjacencyFns.d.ts +0 -89
  1296. package/dist/vendored/brepjs/topology/adjacencyFns.d.ts.map +0 -1
  1297. package/dist/vendored/brepjs/topology/adjacencyFns.js +0 -411
  1298. package/dist/vendored/brepjs/topology/adjacencyFns.js.map +0 -1
  1299. package/dist/vendored/brepjs/topology/api.d.ts +0 -145
  1300. package/dist/vendored/brepjs/topology/api.d.ts.map +0 -1
  1301. package/dist/vendored/brepjs/topology/api.js +0 -282
  1302. package/dist/vendored/brepjs/topology/api.js.map +0 -1
  1303. package/dist/vendored/brepjs/topology/apiTypes.d.ts +0 -135
  1304. package/dist/vendored/brepjs/topology/apiTypes.d.ts.map +0 -1
  1305. package/dist/vendored/brepjs/topology/apiTypes.js +0 -24
  1306. package/dist/vendored/brepjs/topology/apiTypes.js.map +0 -1
  1307. package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts +0 -52
  1308. package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts.map +0 -1
  1309. package/dist/vendored/brepjs/topology/booleanBatchFns.js +0 -164
  1310. package/dist/vendored/brepjs/topology/booleanBatchFns.js.map +0 -1
  1311. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts +0 -21
  1312. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts.map +0 -1
  1313. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js +0 -23
  1314. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js.map +0 -1
  1315. package/dist/vendored/brepjs/topology/booleanFns.d.ts +0 -155
  1316. package/dist/vendored/brepjs/topology/booleanFns.d.ts.map +0 -1
  1317. package/dist/vendored/brepjs/topology/booleanFns.js +0 -600
  1318. package/dist/vendored/brepjs/topology/booleanFns.js.map +0 -1
  1319. package/dist/vendored/brepjs/topology/cast.d.ts +0 -48
  1320. package/dist/vendored/brepjs/topology/cast.d.ts.map +0 -1
  1321. package/dist/vendored/brepjs/topology/cast.js +0 -113
  1322. package/dist/vendored/brepjs/topology/cast.js.map +0 -1
  1323. package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts +0 -24
  1324. package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts.map +0 -1
  1325. package/dist/vendored/brepjs/topology/chamferAngleFns.js +0 -64
  1326. package/dist/vendored/brepjs/topology/chamferAngleFns.js.map +0 -1
  1327. package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts +0 -6
  1328. package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts.map +0 -1
  1329. package/dist/vendored/brepjs/topology/compoundOpsFns.js +0 -6
  1330. package/dist/vendored/brepjs/topology/compoundOpsFns.js.map +0 -1
  1331. package/dist/vendored/brepjs/topology/curveBuilders.d.ts +0 -90
  1332. package/dist/vendored/brepjs/topology/curveBuilders.d.ts.map +0 -1
  1333. package/dist/vendored/brepjs/topology/curveBuilders.js +0 -125
  1334. package/dist/vendored/brepjs/topology/curveBuilders.js.map +0 -1
  1335. package/dist/vendored/brepjs/topology/curveFns.d.ts +0 -96
  1336. package/dist/vendored/brepjs/topology/curveFns.d.ts.map +0 -1
  1337. package/dist/vendored/brepjs/topology/curveFns.js +0 -191
  1338. package/dist/vendored/brepjs/topology/curveFns.js.map +0 -1
  1339. package/dist/vendored/brepjs/topology/evolutionFns.d.ts +0 -78
  1340. package/dist/vendored/brepjs/topology/evolutionFns.d.ts.map +0 -1
  1341. package/dist/vendored/brepjs/topology/evolutionFns.js +0 -271
  1342. package/dist/vendored/brepjs/topology/evolutionFns.js.map +0 -1
  1343. package/dist/vendored/brepjs/topology/faceFns.d.ts +0 -86
  1344. package/dist/vendored/brepjs/topology/faceFns.d.ts.map +0 -1
  1345. package/dist/vendored/brepjs/topology/faceFns.js +0 -169
  1346. package/dist/vendored/brepjs/topology/faceFns.js.map +0 -1
  1347. package/dist/vendored/brepjs/topology/healingFns.d.ts +0 -98
  1348. package/dist/vendored/brepjs/topology/healingFns.d.ts.map +0 -1
  1349. package/dist/vendored/brepjs/topology/healingFns.js +0 -338
  1350. package/dist/vendored/brepjs/topology/healingFns.js.map +0 -1
  1351. package/dist/vendored/brepjs/topology/hullFns.d.ts +0 -21
  1352. package/dist/vendored/brepjs/topology/hullFns.d.ts.map +0 -1
  1353. package/dist/vendored/brepjs/topology/hullFns.js +0 -60
  1354. package/dist/vendored/brepjs/topology/hullFns.js.map +0 -1
  1355. package/dist/vendored/brepjs/topology/index.d.ts +0 -14
  1356. package/dist/vendored/brepjs/topology/index.d.ts.map +0 -1
  1357. package/dist/vendored/brepjs/topology/index.js +0 -17
  1358. package/dist/vendored/brepjs/topology/index.js.map +0 -1
  1359. package/dist/vendored/brepjs/topology/meshCache.d.ts +0 -68
  1360. package/dist/vendored/brepjs/topology/meshCache.d.ts.map +0 -1
  1361. package/dist/vendored/brepjs/topology/meshCache.js +0 -117
  1362. package/dist/vendored/brepjs/topology/meshCache.js.map +0 -1
  1363. package/dist/vendored/brepjs/topology/meshFns.d.ts +0 -179
  1364. package/dist/vendored/brepjs/topology/meshFns.d.ts.map +0 -1
  1365. package/dist/vendored/brepjs/topology/meshFns.js +0 -393
  1366. package/dist/vendored/brepjs/topology/meshFns.js.map +0 -1
  1367. package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts +0 -41
  1368. package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts.map +0 -1
  1369. package/dist/vendored/brepjs/topology/metadata/colorFns.js +0 -128
  1370. package/dist/vendored/brepjs/topology/metadata/colorFns.js.map +0 -1
  1371. package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts +0 -44
  1372. package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts.map +0 -1
  1373. package/dist/vendored/brepjs/topology/metadata/faceTagFns.js +0 -168
  1374. package/dist/vendored/brepjs/topology/metadata/faceTagFns.js.map +0 -1
  1375. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts +0 -59
  1376. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts.map +0 -1
  1377. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js +0 -109
  1378. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js.map +0 -1
  1379. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts +0 -43
  1380. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts.map +0 -1
  1381. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js +0 -270
  1382. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js.map +0 -1
  1383. package/dist/vendored/brepjs/topology/minkowskiFns.d.ts +0 -26
  1384. package/dist/vendored/brepjs/topology/minkowskiFns.d.ts.map +0 -1
  1385. package/dist/vendored/brepjs/topology/minkowskiFns.js +0 -136
  1386. package/dist/vendored/brepjs/topology/minkowskiFns.js.map +0 -1
  1387. package/dist/vendored/brepjs/topology/modifierFns.d.ts +0 -87
  1388. package/dist/vendored/brepjs/topology/modifierFns.d.ts.map +0 -1
  1389. package/dist/vendored/brepjs/topology/modifierFns.js +0 -446
  1390. package/dist/vendored/brepjs/topology/modifierFns.js.map +0 -1
  1391. package/dist/vendored/brepjs/topology/nurbsFns.d.ts +0 -13
  1392. package/dist/vendored/brepjs/topology/nurbsFns.d.ts.map +0 -1
  1393. package/dist/vendored/brepjs/topology/nurbsFns.js +0 -22
  1394. package/dist/vendored/brepjs/topology/nurbsFns.js.map +0 -1
  1395. package/dist/vendored/brepjs/topology/polyhedronFns.d.ts +0 -11
  1396. package/dist/vendored/brepjs/topology/polyhedronFns.d.ts.map +0 -1
  1397. package/dist/vendored/brepjs/topology/polyhedronFns.js +0 -47
  1398. package/dist/vendored/brepjs/topology/polyhedronFns.js.map +0 -1
  1399. package/dist/vendored/brepjs/topology/positionFns.d.ts +0 -18
  1400. package/dist/vendored/brepjs/topology/positionFns.d.ts.map +0 -1
  1401. package/dist/vendored/brepjs/topology/positionFns.js +0 -34
  1402. package/dist/vendored/brepjs/topology/positionFns.js.map +0 -1
  1403. package/dist/vendored/brepjs/topology/primitiveFns.d.ts +0 -244
  1404. package/dist/vendored/brepjs/topology/primitiveFns.d.ts.map +0 -1
  1405. package/dist/vendored/brepjs/topology/primitiveFns.js +0 -361
  1406. package/dist/vendored/brepjs/topology/primitiveFns.js.map +0 -1
  1407. package/dist/vendored/brepjs/topology/shapeBooleans.d.ts +0 -14
  1408. package/dist/vendored/brepjs/topology/shapeBooleans.d.ts.map +0 -1
  1409. package/dist/vendored/brepjs/topology/shapeBooleans.js +0 -24
  1410. package/dist/vendored/brepjs/topology/shapeBooleans.js.map +0 -1
  1411. package/dist/vendored/brepjs/topology/shapeFns.d.ts +0 -30
  1412. package/dist/vendored/brepjs/topology/shapeFns.d.ts.map +0 -1
  1413. package/dist/vendored/brepjs/topology/shapeFns.js +0 -50
  1414. package/dist/vendored/brepjs/topology/shapeFns.js.map +0 -1
  1415. package/dist/vendored/brepjs/topology/shapeHelpers.d.ts +0 -9
  1416. package/dist/vendored/brepjs/topology/shapeHelpers.d.ts.map +0 -1
  1417. package/dist/vendored/brepjs/topology/shapeHelpers.js +0 -14
  1418. package/dist/vendored/brepjs/topology/shapeHelpers.js.map +0 -1
  1419. package/dist/vendored/brepjs/topology/shapeModifiers.d.ts +0 -33
  1420. package/dist/vendored/brepjs/topology/shapeModifiers.d.ts.map +0 -1
  1421. package/dist/vendored/brepjs/topology/shapeModifiers.js +0 -28
  1422. package/dist/vendored/brepjs/topology/shapeModifiers.js.map +0 -1
  1423. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts +0 -29
  1424. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts.map +0 -1
  1425. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js +0 -135
  1426. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js.map +0 -1
  1427. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts +0 -25
  1428. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts.map +0 -1
  1429. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js +0 -123
  1430. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js.map +0 -1
  1431. package/dist/vendored/brepjs/topology/shapeRef/index.d.ts +0 -11
  1432. package/dist/vendored/brepjs/topology/shapeRef/index.d.ts.map +0 -1
  1433. package/dist/vendored/brepjs/topology/shapeRef/index.js +0 -10
  1434. package/dist/vendored/brepjs/topology/shapeRef/index.js.map +0 -1
  1435. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts +0 -66
  1436. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts.map +0 -1
  1437. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js +0 -128
  1438. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js.map +0 -1
  1439. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts +0 -18
  1440. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts.map +0 -1
  1441. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js +0 -51
  1442. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js.map +0 -1
  1443. package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts +0 -20
  1444. package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts.map +0 -1
  1445. package/dist/vendored/brepjs/topology/shapeRef/scoring.js +0 -65
  1446. package/dist/vendored/brepjs/topology/shapeRef/scoring.js.map +0 -1
  1447. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts +0 -59
  1448. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts.map +0 -1
  1449. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js +0 -266
  1450. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js.map +0 -1
  1451. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts +0 -153
  1452. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts.map +0 -1
  1453. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js +0 -6
  1454. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js.map +0 -1
  1455. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts +0 -24
  1456. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts.map +0 -1
  1457. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js +0 -128
  1458. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js.map +0 -1
  1459. package/dist/vendored/brepjs/topology/shapeUtils.d.ts +0 -16
  1460. package/dist/vendored/brepjs/topology/shapeUtils.d.ts.map +0 -1
  1461. package/dist/vendored/brepjs/topology/shapeUtils.js +0 -28
  1462. package/dist/vendored/brepjs/topology/shapeUtils.js.map +0 -1
  1463. package/dist/vendored/brepjs/topology/solidBuilders.d.ts +0 -74
  1464. package/dist/vendored/brepjs/topology/solidBuilders.d.ts.map +0 -1
  1465. package/dist/vendored/brepjs/topology/solidBuilders.js +0 -173
  1466. package/dist/vendored/brepjs/topology/solidBuilders.js.map +0 -1
  1467. package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts +0 -47
  1468. package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts.map +0 -1
  1469. package/dist/vendored/brepjs/topology/surfaceBuilders.js +0 -162
  1470. package/dist/vendored/brepjs/topology/surfaceBuilders.js.map +0 -1
  1471. package/dist/vendored/brepjs/topology/surfaceFns.d.ts +0 -41
  1472. package/dist/vendored/brepjs/topology/surfaceFns.d.ts.map +0 -1
  1473. package/dist/vendored/brepjs/topology/surfaceFns.js +0 -178
  1474. package/dist/vendored/brepjs/topology/surfaceFns.js.map +0 -1
  1475. package/dist/vendored/brepjs/topology/threeHelpers.d.ts +0 -124
  1476. package/dist/vendored/brepjs/topology/threeHelpers.d.ts.map +0 -1
  1477. package/dist/vendored/brepjs/topology/threeHelpers.js +0 -118
  1478. package/dist/vendored/brepjs/topology/threeHelpers.js.map +0 -1
  1479. package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts +0 -100
  1480. package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts.map +0 -1
  1481. package/dist/vendored/brepjs/topology/topologyQueryFns.js +0 -307
  1482. package/dist/vendored/brepjs/topology/topologyQueryFns.js.map +0 -1
  1483. package/dist/vendored/brepjs/topology/transformFns.d.ts +0 -69
  1484. package/dist/vendored/brepjs/topology/transformFns.d.ts.map +0 -1
  1485. package/dist/vendored/brepjs/topology/transformFns.js +0 -235
  1486. package/dist/vendored/brepjs/topology/transformFns.js.map +0 -1
  1487. package/dist/vendored/brepjs/topology/wrapperFns.d.ts +0 -169
  1488. package/dist/vendored/brepjs/topology/wrapperFns.d.ts.map +0 -1
  1489. package/dist/vendored/brepjs/topology/wrapperFns.js +0 -291
  1490. package/dist/vendored/brepjs/topology/wrapperFns.js.map +0 -1
  1491. package/dist/vendored/brepjs/topology.d.ts +0 -28
  1492. package/dist/vendored/brepjs/topology.d.ts.map +0 -1
  1493. package/dist/vendored/brepjs/topology.js +0 -39
  1494. package/dist/vendored/brepjs/topology.js.map +0 -1
  1495. package/dist/vendored/brepjs/utils/arrayAccess.d.ts +0 -12
  1496. package/dist/vendored/brepjs/utils/arrayAccess.d.ts.map +0 -1
  1497. package/dist/vendored/brepjs/utils/arrayAccess.js +0 -25
  1498. package/dist/vendored/brepjs/utils/arrayAccess.js.map +0 -1
  1499. package/dist/vendored/brepjs/utils/bug.d.ts +0 -15
  1500. package/dist/vendored/brepjs/utils/bug.d.ts.map +0 -1
  1501. package/dist/vendored/brepjs/utils/bug.js +0 -21
  1502. package/dist/vendored/brepjs/utils/bug.js.map +0 -1
  1503. package/dist/vendored/brepjs/utils/ioFilename.d.ts +0 -3
  1504. package/dist/vendored/brepjs/utils/ioFilename.d.ts.map +0 -1
  1505. package/dist/vendored/brepjs/utils/ioFilename.js +0 -7
  1506. package/dist/vendored/brepjs/utils/ioFilename.js.map +0 -1
  1507. package/dist/vendored/brepjs/utils/precisionRound.d.ts +0 -11
  1508. package/dist/vendored/brepjs/utils/precisionRound.d.ts.map +0 -1
  1509. package/dist/vendored/brepjs/utils/precisionRound.js +0 -19
  1510. package/dist/vendored/brepjs/utils/precisionRound.js.map +0 -1
  1511. package/dist/vendored/brepjs/utils/quaternion.d.ts +0 -18
  1512. package/dist/vendored/brepjs/utils/quaternion.d.ts.map +0 -1
  1513. package/dist/vendored/brepjs/utils/quaternion.js +0 -68
  1514. package/dist/vendored/brepjs/utils/quaternion.js.map +0 -1
  1515. package/dist/vendored/brepjs/utils/range.d.ts +0 -3
  1516. package/dist/vendored/brepjs/utils/range.d.ts.map +0 -1
  1517. package/dist/vendored/brepjs/utils/range.js +0 -5
  1518. package/dist/vendored/brepjs/utils/range.js.map +0 -1
  1519. package/dist/vendored/brepjs/utils/uuid.d.ts +0 -3
  1520. package/dist/vendored/brepjs/utils/uuid.d.ts.map +0 -1
  1521. package/dist/vendored/brepjs/utils/uuid.js +0 -7
  1522. package/dist/vendored/brepjs/utils/uuid.js.map +0 -1
  1523. package/dist/vendored/brepjs/utils/vec2d.d.ts +0 -62
  1524. package/dist/vendored/brepjs/utils/vec2d.d.ts.map +0 -1
  1525. package/dist/vendored/brepjs/utils/vec2d.js +0 -107
  1526. package/dist/vendored/brepjs/utils/vec2d.js.map +0 -1
  1527. package/dist/vendored/brepjs/utils/vec3.d.ts +0 -32
  1528. package/dist/vendored/brepjs/utils/vec3.d.ts.map +0 -1
  1529. package/dist/vendored/brepjs/utils/vec3.js +0 -35
  1530. package/dist/vendored/brepjs/utils/vec3.js.map +0 -1
  1531. package/dist/vendored/brepjs/utils/zip.d.ts +0 -5
  1532. package/dist/vendored/brepjs/utils/zip.d.ts.map +0 -1
  1533. package/dist/vendored/brepjs/utils/zip.js +0 -8
  1534. package/dist/vendored/brepjs/utils/zip.js.map +0 -1
  1535. package/dist/vendored/brepjs/vectors.d.ts +0 -11
  1536. package/dist/vendored/brepjs/vectors.d.ts.map +0 -1
  1537. package/dist/vendored/brepjs/vectors.js +0 -9
  1538. package/dist/vendored/brepjs/vectors.js.map +0 -1
@@ -9,7 +9,7 @@
9
9
  * 简化:去掉了 boundaryFalloff、blendNormalSmoothing、cubic zoneArea 等。
10
10
  * 保留了核心水密性保证:同位置顶点使用相同平滑法线 + 相同位移值。
11
11
  */
12
- import * as THREE from 'three';
12
+ import { Vec3 as Vec3C } from '../../math3d/index.js';
13
13
  import { QuantizedPointMap } from './meshIndex.js';
14
14
  import { computeUV, getCubicBlendWeights } from './mapping.js';
15
15
  /**
@@ -28,19 +28,19 @@ import { computeUV, getCubicBlendWeights } from './mapping.js';
28
28
  * @returns a new BufferGeometry with displaced positions and face normals.
29
29
  */
30
30
  export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, settings, bounds, onProgress) {
31
- const posAttr = geometry.attributes.position;
32
- const nrmAttr = geometry.attributes.normal;
33
- const count = posAttr.count;
31
+ const posAttr = geometry.positions;
32
+ const nrmAttr = geometry.normals || new Float32Array(posAttr.length);
33
+ const count = posAttr.length / 3;
34
34
  const newPos = new Float32Array(count * 3);
35
35
  const newNrm = new Float32Array(count * 3);
36
- const tmpPos = new THREE.Vector3();
37
- const tmpNrm = new THREE.Vector3();
38
- const vA = new THREE.Vector3();
39
- const vB = new THREE.Vector3();
40
- const vC = new THREE.Vector3();
41
- const edge1 = new THREE.Vector3();
42
- const edge2 = new THREE.Vector3();
43
- const faceNrm = new THREE.Vector3();
36
+ const tmpPos = new Vec3C();
37
+ const tmpNrm = new Vec3C();
38
+ const vA = new Vec3C();
39
+ const vB = new Vec3C();
40
+ const vC = new Vec3C();
41
+ const edge1 = new Vec3C();
42
+ const edge2 = new Vec3C();
43
+ const faceNrm = new Vec3C();
44
44
  // 纹理纵横比校正
45
45
  const tmax = Math.max(imgWidth, imgHeight, 1);
46
46
  const aspectU = tmax / Math.max(imgWidth, 1);
@@ -53,7 +53,7 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
53
53
  let nextId = 0;
54
54
  const vertexId = new Uint32Array(count);
55
55
  for (let i = 0; i < count; i++) {
56
- const x = posAttr.getX(i), y = posAttr.getY(i), z = posAttr.getZ(i);
56
+ const x = posAttr[i * 3], y = posAttr[i * 3 + 1], z = posAttr[i * 3 + 2];
57
57
  const id = dedupMap.getOrSet(x, y, z, nextId);
58
58
  if (dedupMap.inserted)
59
59
  nextId++;
@@ -68,13 +68,13 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
68
68
  const maskedFracMasked = new Float64Array(uniqueCount);
69
69
  const maskedFracTotal = new Float64Array(uniqueCount);
70
70
  // 面排除权重
71
- const ewAttr = geometry.attributes.excludeWeight || null;
71
+ const ewAttr = geometry.excludeWeight || null;
72
72
  const userExcludedFaces = ewAttr ? new Uint8Array(count / 3) : null;
73
73
  const excludedPos = ewAttr ? new Uint8Array(uniqueCount) : null;
74
74
  for (let t = 0; t < count; t += 3) {
75
- vA.fromBufferAttribute(posAttr, t);
76
- vB.fromBufferAttribute(posAttr, t + 1);
77
- vC.fromBufferAttribute(posAttr, t + 2);
75
+ vA.set(posAttr[t * 3], posAttr[t * 3 + 1], posAttr[t * 3 + 2]);
76
+ vB.set(posAttr[(t + 1) * 3], posAttr[(t + 1) * 3 + 1], posAttr[(t + 1) * 3 + 2]);
77
+ vC.set(posAttr[(t + 2) * 3], posAttr[(t + 2) * 3 + 1], posAttr[(t + 2) * 3 + 2]);
78
78
  edge1.subVectors(vB, vA);
79
79
  edge2.subVectors(vC, vA);
80
80
  faceNrm.crossVectors(edge1, edge2);
@@ -87,7 +87,7 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
87
87
  : (settings.topAngleLimit ?? 0) > 0 &&
88
88
  faceAngle <= (settings.topAngleLimit ?? 0);
89
89
  const userExcluded = ewAttr
90
- ? (ewAttr.getX(t) + ewAttr.getX(t + 1) + ewAttr.getX(t + 2)) / 3 > 0.99
90
+ ? (ewAttr[t] + ewAttr[t + 1] + ewAttr[t + 2]) / 3 > 0.99
91
91
  : false;
92
92
  const faceMasked = angleMasked;
93
93
  if (userExcluded && userExcludedFaces)
@@ -96,7 +96,7 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
96
96
  const vid = vertexId[t + v];
97
97
  if (userExcluded && excludedPos)
98
98
  excludedPos[vid] = 1;
99
- tmpNrm.fromBufferAttribute(nrmAttr, t + v);
99
+ tmpNrm.set(nrmAttr[(t + v) * 3], nrmAttr[(t + v) * 3 + 1], nrmAttr[(t + v) * 3 + 2]);
100
100
  smoothNrmX[vid] += tmpNrm.x * faceArea;
101
101
  smoothNrmY[vid] += tmpNrm.y * faceArea;
102
102
  smoothNrmZ[vid] += tmpNrm.z * faceArea;
@@ -123,7 +123,7 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
123
123
  if (dispCacheSet[vid])
124
124
  continue;
125
125
  dispCacheSet[vid] = 1;
126
- tmpPos.fromBufferAttribute(posAttr, i);
126
+ tmpPos.set(posAttr[i * 3], posAttr[i * 3 + 1], posAttr[i * 3 + 2]);
127
127
  // Cubic 模式特殊处理
128
128
  if (settings.mappingMode === 6) {
129
129
  const md = Math.max(bounds.size.x, bounds.size.y, bounds.size.z, 1e-6);
@@ -181,8 +181,8 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
181
181
  // ── Pass 3: 每个顶点副本沿平滑法线位移 ──
182
182
  const REPORT_EVERY = 5000;
183
183
  for (let i = 0; i < count; i++) {
184
- tmpPos.fromBufferAttribute(posAttr, i);
185
- tmpNrm.fromBufferAttribute(nrmAttr, i);
184
+ tmpPos.set(posAttr[i * 3], posAttr[i * 3 + 1], posAttr[i * 3 + 2]);
185
+ tmpNrm.set(nrmAttr[i * 3], nrmAttr[i * 3 + 1], nrmAttr[i * 3 + 2]);
186
186
  const vid = vertexId[i];
187
187
  const grey = dispCacheVal[vid];
188
188
  const isFaceExcluded = userExcludedFaces && userExcludedFaces[Math.floor(i / 3)];
@@ -213,9 +213,9 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
213
213
  onProgress(i / count);
214
214
  }
215
215
  // 从位移后位置计算精确的面法线
216
- const eA = new THREE.Vector3();
217
- const eB = new THREE.Vector3();
218
- const fn = new THREE.Vector3();
216
+ const eA = new Vec3C();
217
+ const eB = new Vec3C();
218
+ const fn = new Vec3C();
219
219
  for (let t = 0; t < count; t += 3) {
220
220
  const ax = newPos[t * 3], ay = newPos[t * 3 + 1], az = newPos[t * 3 + 2];
221
221
  const bx = newPos[t * 3 + 3], by = newPos[t * 3 + 4], bz = newPos[t * 3 + 5];
@@ -229,10 +229,10 @@ export function applyDisplacement(geometry, imageData, imgWidth, imgHeight, sett
229
229
  newNrm[(t + v) * 3 + 2] = fn.z;
230
230
  }
231
231
  }
232
- const out = new THREE.BufferGeometry();
233
- out.setAttribute('position', new THREE.BufferAttribute(newPos, 3));
234
- out.setAttribute('normal', new THREE.BufferAttribute(newNrm, 3));
235
- return out;
232
+ const indices = new Uint32Array(count);
233
+ for (let i = 0; i < count; i++)
234
+ indices[i] = i;
235
+ return { positions: newPos, indices, normals: newNrm };
236
236
  }
237
237
  // ── 双线性采样 ──
238
238
  function sampleBilinear(data, w, h, u, v) {
@@ -1 +1 @@
1
- {"version":3,"file":"displacement.js","sourceRoot":"","sources":["../../../src/mesh/knurl/displacement.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * displacement.ts — 纹理位移核心,从 stlTexturizer/js/displacement.js 移植为 TS(简化版)。\n *\n * 对每个顶点:\n * 1. 用与 GPU 预览 shader 相同的数学计算 UV(mapping.ts)\n * 2. 双线性采样灰度 ImageData\n * 3. 沿平滑法线位移:grey × amplitude\n *\n * 简化:去掉了 boundaryFalloff、blendNormalSmoothing、cubic zoneArea 等。\n * 保留了核心水密性保证:同位置顶点使用相同平滑法线 + 相同位移值。\n */\n\nimport * as THREE from 'three'\nimport { QuantizedPointMap } from './meshIndex'\nimport { computeUV, getCubicBlendWeights, type MappingSettings } from './mapping'\n\n/**\n * Displacement settings: the mapping settings plus the amplitude, optional\n * symmetric displacement, and angle-based face-masking limits.\n */\nexport interface DisplacementSettings extends MappingSettings {\n mappingMode: number\n amplitude: number\n symmetricDisplacement?: boolean\n bottomAngleLimit?: number\n topAngleLimit?: number\n}\n\ninterface Bounds {\n min: THREE.Vector3\n max: THREE.Vector3\n center: THREE.Vector3\n size: THREE.Vector3\n}\n\ninterface ImageDataLike {\n data: Uint8ClampedArray | Uint8Array\n width: number\n height: number\n}\n\n/**\n * Displace every vertex of a non-indexed BufferGeometry. For each vertex the\n * UV is computed with the same math as the GPU preview shader, the greyscale\n * ImageData is sampled bilinearly, and the position is shifted along the\n * smoothed normal by grey × amplitude.\n *\n * @param geometry - the non-indexed source geometry (position + normal attributes).\n * @param imageData - RGBA pixel data of the height map.\n * @param imgWidth - texture width in pixels.\n * @param imgHeight - texture height in pixels.\n * @param settings - displacement and mapping settings.\n * @param bounds - overall mesh bounds used to normalize UV coordinates.\n * @param onProgress - optional callback receiving progress in [0, 1].\n * @returns a new BufferGeometry with displaced positions and face normals.\n */\nexport function applyDisplacement(\n geometry: THREE.BufferGeometry,\n imageData: ImageDataLike,\n imgWidth: number,\n imgHeight: number,\n settings: DisplacementSettings,\n bounds: Bounds,\n onProgress?: (p: number) => void,\n): THREE.BufferGeometry {\n const posAttr = geometry.attributes.position\n const nrmAttr = geometry.attributes.normal\n const count = posAttr.count\n\n const newPos = new Float32Array(count * 3)\n const newNrm = new Float32Array(count * 3)\n\n const tmpPos = new THREE.Vector3()\n const tmpNrm = new THREE.Vector3()\n const vA = new THREE.Vector3()\n const vB = new THREE.Vector3()\n const vC = new THREE.Vector3()\n const edge1 = new THREE.Vector3()\n const edge2 = new THREE.Vector3()\n const faceNrm = new THREE.Vector3()\n\n // 纹理纵横比校正\n const tmax = Math.max(imgWidth, imgHeight, 1)\n const aspectU = tmax / Math.max(imgWidth, 1)\n const aspectV = tmax / Math.max(imgHeight, 1)\n const settingsWithAspect = { ...settings, textureAspectU: aspectU, textureAspectV: aspectV }\n\n // 10μm 顶点去重\n const QUANT = 1e5\n\n // ── 顶点去重:position → numeric ID ──\n const dedupMap = new QuantizedPointMap(QUANT, Math.min(count, 1 << 22))\n let nextId = 0\n const vertexId = new Uint32Array(count)\n for (let i = 0; i < count; i++) {\n const x = posAttr.getX(i),\n y = posAttr.getY(i),\n z = posAttr.getZ(i)\n const id = dedupMap.getOrSet(x, y, z, nextId)\n if (dedupMap.inserted) nextId++\n vertexId[i] = id\n }\n const uniqueCount = nextId\n\n // ── Pass 1: 每个唯一顶点累加面积加权平滑法线 ──\n const smoothNrmX = new Float64Array(uniqueCount)\n const smoothNrmY = new Float64Array(uniqueCount)\n const smoothNrmZ = new Float64Array(uniqueCount)\n\n // 角度遮罩\n const maskedFracMasked = new Float64Array(uniqueCount)\n const maskedFracTotal = new Float64Array(uniqueCount)\n\n // 面排除权重\n const ewAttr = geometry.attributes.excludeWeight || null\n const userExcludedFaces = ewAttr ? new Uint8Array(count / 3) : null\n const excludedPos = ewAttr ? new Uint8Array(uniqueCount) : null\n\n for (let t = 0; t < count; t += 3) {\n vA.fromBufferAttribute(posAttr, t)\n vB.fromBufferAttribute(posAttr, t + 1)\n vC.fromBufferAttribute(posAttr, t + 2)\n edge1.subVectors(vB, vA)\n edge2.subVectors(vC, vA)\n faceNrm.crossVectors(edge1, edge2)\n\n const faceArea = faceNrm.length()\n const faceNzNorm = faceArea > 1e-12 ? faceNrm.z / faceArea : 0\n const faceAngle = Math.acos(Math.abs(faceNzNorm)) * (180 / Math.PI)\n const angleMasked =\n faceNzNorm < 0\n ? (settings.bottomAngleLimit ?? 0) > 0 &&\n faceAngle <= (settings.bottomAngleLimit ?? 0)\n : (settings.topAngleLimit ?? 0) > 0 &&\n faceAngle <= (settings.topAngleLimit ?? 0)\n\n const userExcluded = ewAttr\n ? (ewAttr.getX(t) + ewAttr.getX(t + 1) + ewAttr.getX(t + 2)) / 3 > 0.99\n : false\n const faceMasked = angleMasked\n if (userExcluded && userExcludedFaces) userExcludedFaces[t / 3] = 1\n\n for (let v = 0; v < 3; v++) {\n const vid = vertexId[t + v]\n if (userExcluded && excludedPos) excludedPos[vid] = 1\n tmpNrm.fromBufferAttribute(nrmAttr, t + v)\n smoothNrmX[vid] += tmpNrm.x * faceArea\n smoothNrmY[vid] += tmpNrm.y * faceArea\n smoothNrmZ[vid] += tmpNrm.z * faceArea\n if (faceMasked) maskedFracMasked[vid] += faceArea\n maskedFracTotal[vid] += faceArea\n }\n }\n\n // 归一化平滑法线\n for (let id = 0; id < uniqueCount; id++) {\n const len = Math.sqrt(\n smoothNrmX[id] * smoothNrmX[id] +\n smoothNrmY[id] * smoothNrmY[id] +\n smoothNrmZ[id] * smoothNrmZ[id],\n )\n const inv = len > 0 ? 1 / len : 1\n smoothNrmX[id] *= inv\n smoothNrmY[id] *= inv\n smoothNrmZ[id] *= inv\n }\n\n // ── Pass 2: 每个唯一顶点采样纹理一次 ──\n const dispCacheVal = new Float64Array(uniqueCount)\n const dispCacheSet = new Uint8Array(uniqueCount)\n\n for (let i = 0; i < count; i++) {\n const vid = vertexId[i]\n if (dispCacheSet[vid]) continue\n dispCacheSet[vid] = 1\n\n tmpPos.fromBufferAttribute(posAttr, i)\n\n // Cubic 模式特殊处理\n if (settings.mappingMode === 6) {\n const md = Math.max(bounds.size.x, bounds.size.y, bounds.size.z, 1e-6)\n const rotRad = (settings.rotation ?? 0) * Math.PI / 180\n const cubicBlend = settings.mappingBlend ?? 0\n const cubicBandWidth = settings.seamBandWidth ?? 0.35\n\n const sn = {\n x: smoothNrmX[vid],\n y: smoothNrmY[vid],\n z: smoothNrmZ[vid],\n }\n const w = getCubicBlendWeights(sn, cubicBlend, cubicBandWidth)\n\n if (w.x + w.y + w.z > 0) {\n let grey = 0\n if (w.x > 0) {\n let rawU = (tmpPos.y - bounds.min.y) / md\n if (smoothNrmX[vid] < 0) rawU = -rawU\n const uv = _cubicUV(rawU, (tmpPos.z - bounds.min.z) / md, settings, rotRad, aspectU, aspectV)\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, uv.u, uv.v) * w.x\n }\n if (w.y > 0) {\n let rawU = (tmpPos.x - bounds.min.x) / md\n if (smoothNrmY[vid] > 0) rawU = -rawU\n const uv = _cubicUV(rawU, (tmpPos.z - bounds.min.z) / md, settings, rotRad, aspectU, aspectV)\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, uv.u, uv.v) * w.y\n }\n if (w.z > 0) {\n let rawU = (tmpPos.x - bounds.min.x) / md\n if (smoothNrmZ[vid] < 0) rawU = -rawU\n const uv = _cubicUV(rawU, (tmpPos.y - bounds.min.y) / md, settings, rotRad, aspectU, aspectV)\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, uv.u, uv.v) * w.z\n }\n dispCacheVal[vid] = grey\n continue\n }\n }\n\n // 其他模式:用平滑法线计算 UV\n tmpNrm.set(smoothNrmX[vid], smoothNrmY[vid], smoothNrmZ[vid])\n\n const uvResult = computeUV(tmpPos, tmpNrm, settings.mappingMode, settingsWithAspect, bounds)\n let grey: number\n if (uvResult.triplanar && uvResult.samples) {\n grey = 0\n for (const s of uvResult.samples) {\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, s.u, s.v) * s.w\n }\n } else {\n grey = sampleBilinear(imageData.data, imgWidth, imgHeight, uvResult.u, uvResult.v)\n }\n dispCacheVal[vid] = grey\n }\n\n // ── Pass 3: 每个顶点副本沿平滑法线位移 ──\n const REPORT_EVERY = 5000\n\n for (let i = 0; i < count; i++) {\n tmpPos.fromBufferAttribute(posAttr, i)\n tmpNrm.fromBufferAttribute(nrmAttr, i)\n\n const vid = vertexId[i]\n const grey = dispCacheVal[vid]\n\n const isFaceExcluded = userExcludedFaces && userExcludedFaces[Math.floor(i / 3)]\n const isSealedBoundary = !isFaceExcluded && excludedPos && excludedPos[vid] === 1\n const mfTotal = maskedFracTotal[vid]\n const maskedFrac = mfTotal > 0 ? maskedFracMasked[vid] / mfTotal : 0\n const centeredGrey = settings.symmetricDisplacement ? grey - 0.5 : grey\n const disp =\n isFaceExcluded || isSealedBoundary\n ? 0\n : (1 - maskedFrac) * centeredGrey * settings.amplitude\n\n const newX = tmpPos.x + smoothNrmX[vid] * disp\n const newY = tmpPos.y + smoothNrmY[vid] * disp\n let newZ = tmpPos.z + smoothNrmZ[vid] * disp\n\n // 防止边界顶点穿过遮罩表面\n if (maskedFrac > 0) {\n if ((settings.bottomAngleLimit ?? 0) > 0 && newZ < tmpPos.z) newZ = tmpPos.z\n if ((settings.topAngleLimit ?? 0) > 0 && newZ > tmpPos.z) newZ = tmpPos.z\n }\n\n newPos[i * 3] = newX\n newPos[i * 3 + 1] = newY\n newPos[i * 3 + 2] = newZ\n\n newNrm[i * 3] = tmpNrm.x\n newNrm[i * 3 + 1] = tmpNrm.y\n newNrm[i * 3 + 2] = tmpNrm.z\n\n if (onProgress && i % REPORT_EVERY === 0) onProgress(i / count)\n }\n\n // 从位移后位置计算精确的面法线\n const eA = new THREE.Vector3()\n const eB = new THREE.Vector3()\n const fn = new THREE.Vector3()\n for (let t = 0; t < count; t += 3) {\n const ax = newPos[t * 3],\n ay = newPos[t * 3 + 1],\n az = newPos[t * 3 + 2]\n const bx = newPos[t * 3 + 3],\n by = newPos[t * 3 + 4],\n bz = newPos[t * 3 + 5]\n const cx = newPos[t * 3 + 6],\n cy = newPos[t * 3 + 7],\n cz = newPos[t * 3 + 8]\n eA.set(bx - ax, by - ay, bz - az)\n eB.set(cx - ax, cy - ay, cz - az)\n fn.crossVectors(eA, eB).normalize()\n for (let v = 0; v < 3; v++) {\n newNrm[(t + v) * 3] = fn.x\n newNrm[(t + v) * 3 + 1] = fn.y\n newNrm[(t + v) * 3 + 2] = fn.z\n }\n }\n\n const out = new THREE.BufferGeometry()\n out.setAttribute('position', new THREE.BufferAttribute(newPos, 3))\n out.setAttribute('normal', new THREE.BufferAttribute(newNrm, 3))\n return out\n}\n\n// ── 双线性采样 ──\n\nfunction sampleBilinear(\n data: Uint8ClampedArray | Uint8Array,\n w: number,\n h: number,\n u: number,\n v: number,\n): number {\n u = ((u % 1) + 1) % 1\n v = ((v % 1) + 1) % 1\n v = 1 - v\n\n const fx = u * w - 0.5\n const fy = v * h - 0.5\n let x0 = Math.floor(fx)\n let y0 = Math.floor(fy)\n const tx = fx - x0\n const ty = fy - y0\n const x1 = (x0 + 1 + w) % w\n const y1 = (y0 + 1 + h) % h\n x0 = ((x0 % w) + w) % w\n y0 = ((y0 % h) + h) % h\n\n const v00 = data[(y0 * w + x0) * 4] / 255\n const v10 = data[(y0 * w + x1) * 4] / 255\n const v01 = data[(y1 * w + x0) * 4] / 255\n const v11 = data[(y1 * w + x1) * 4] / 255\n\n return (\n v00 * (1 - tx) * (1 - ty) +\n v10 * tx * (1 - ty) +\n v01 * (1 - tx) * ty +\n v11 * tx * ty\n )\n}\n\nfunction _cubicUV(\n rawU: number,\n rawV: number,\n settings: DisplacementSettings,\n rotRad: number,\n aspectU: number,\n aspectV: number,\n): { u: number; v: number } {\n let u = (rawU * aspectU) / settings.scaleU + settings.offsetU\n let v = (rawV * aspectV) / settings.scaleV + settings.offsetV\n if (rotRad !== 0) {\n const c = Math.cos(rotRad),\n s = Math.sin(rotRad)\n u -= 0.5\n v -= 0.5\n const ru = c * u - s * v,\n rv = s * u + c * v\n u = ru + 0.5\n v = rv + 0.5\n }\n return { u: u - Math.floor(u), v: v - Math.floor(v) }\n}\n"]}
1
+ {"version":3,"file":"displacement.js","sourceRoot":"","sources":["../../../src/mesh/knurl/displacement.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * displacement.ts — 纹理位移核心,从 stlTexturizer/js/displacement.js 移植为 TS(简化版)。\n *\n * 对每个顶点:\n * 1. 用与 GPU 预览 shader 相同的数学计算 UV(mapping.ts)\n * 2. 双线性采样灰度 ImageData\n * 3. 沿平滑法线位移:grey × amplitude\n *\n * 简化:去掉了 boundaryFalloff、blendNormalSmoothing、cubic zoneArea 等。\n * 保留了核心水密性保证:同位置顶点使用相同平滑法线 + 相同位移值。\n */\n\nimport { Vec3 as Vec3C } from '../../math3d'\nimport type { Shape } from '../types'\nimport { QuantizedPointMap } from './meshIndex'\nimport { computeUV, getCubicBlendWeights, type MappingSettings } from './mapping'\n\n/**\n * Displacement settings: the mapping settings plus the amplitude, optional\n * symmetric displacement, and angle-based face-masking limits.\n */\nexport interface DisplacementSettings extends MappingSettings {\n mappingMode: number\n amplitude: number\n symmetricDisplacement?: boolean\n bottomAngleLimit?: number\n topAngleLimit?: number\n}\n\ninterface Bounds {\n min: Vec3C\n max: Vec3C\n center: Vec3C\n size: Vec3C\n}\n\ninterface ImageDataLike {\n data: Uint8ClampedArray | Uint8Array\n width: number\n height: number\n}\n\n/**\n * Displace every vertex of a non-indexed BufferGeometry. For each vertex the\n * UV is computed with the same math as the GPU preview shader, the greyscale\n * ImageData is sampled bilinearly, and the position is shifted along the\n * smoothed normal by grey × amplitude.\n *\n * @param geometry - the non-indexed source geometry (position + normal attributes).\n * @param imageData - RGBA pixel data of the height map.\n * @param imgWidth - texture width in pixels.\n * @param imgHeight - texture height in pixels.\n * @param settings - displacement and mapping settings.\n * @param bounds - overall mesh bounds used to normalize UV coordinates.\n * @param onProgress - optional callback receiving progress in [0, 1].\n * @returns a new BufferGeometry with displaced positions and face normals.\n */\nexport function applyDisplacement(\n geometry: Shape,\n imageData: ImageDataLike,\n imgWidth: number,\n imgHeight: number,\n settings: DisplacementSettings,\n bounds: Bounds,\n onProgress?: (p: number) => void,\n): Shape {\n const posAttr = geometry.positions\n const nrmAttr = geometry.normals || new Float32Array(posAttr.length)\n const count = posAttr.length / 3\n\n const newPos = new Float32Array(count * 3)\n const newNrm = new Float32Array(count * 3)\n\n const tmpPos = new Vec3C()\n const tmpNrm = new Vec3C()\n const vA = new Vec3C()\n const vB = new Vec3C()\n const vC = new Vec3C()\n const edge1 = new Vec3C()\n const edge2 = new Vec3C()\n const faceNrm = new Vec3C()\n\n // 纹理纵横比校正\n const tmax = Math.max(imgWidth, imgHeight, 1)\n const aspectU = tmax / Math.max(imgWidth, 1)\n const aspectV = tmax / Math.max(imgHeight, 1)\n const settingsWithAspect = { ...settings, textureAspectU: aspectU, textureAspectV: aspectV }\n\n // 10μm 顶点去重\n const QUANT = 1e5\n\n // ── 顶点去重:position → numeric ID ──\n const dedupMap = new QuantizedPointMap(QUANT, Math.min(count, 1 << 22))\n let nextId = 0\n const vertexId = new Uint32Array(count)\n for (let i = 0; i < count; i++) {\n const x = posAttr[i * 3],\n y = posAttr[i * 3 + 1],\n z = posAttr[i * 3 + 2]\n const id = dedupMap.getOrSet(x, y, z, nextId)\n if (dedupMap.inserted) nextId++\n vertexId[i] = id\n }\n const uniqueCount = nextId\n\n // ── Pass 1: 每个唯一顶点累加面积加权平滑法线 ──\n const smoothNrmX = new Float64Array(uniqueCount)\n const smoothNrmY = new Float64Array(uniqueCount)\n const smoothNrmZ = new Float64Array(uniqueCount)\n\n // 角度遮罩\n const maskedFracMasked = new Float64Array(uniqueCount)\n const maskedFracTotal = new Float64Array(uniqueCount)\n\n // 面排除权重\n const ewAttr = (geometry as Shape & { excludeWeight?: Float32Array | null }).excludeWeight || null\n const userExcludedFaces = ewAttr ? new Uint8Array(count / 3) : null\n const excludedPos = ewAttr ? new Uint8Array(uniqueCount) : null\n\n for (let t = 0; t < count; t += 3) {\n vA.set(posAttr[t * 3], posAttr[t * 3 + 1], posAttr[t * 3 + 2])\n vB.set(posAttr[(t + 1) * 3], posAttr[(t + 1) * 3 + 1], posAttr[(t + 1) * 3 + 2])\n vC.set(posAttr[(t + 2) * 3], posAttr[(t + 2) * 3 + 1], posAttr[(t + 2) * 3 + 2])\n edge1.subVectors(vB, vA)\n edge2.subVectors(vC, vA)\n faceNrm.crossVectors(edge1, edge2)\n\n const faceArea = faceNrm.length()\n const faceNzNorm = faceArea > 1e-12 ? faceNrm.z / faceArea : 0\n const faceAngle = Math.acos(Math.abs(faceNzNorm)) * (180 / Math.PI)\n const angleMasked =\n faceNzNorm < 0\n ? (settings.bottomAngleLimit ?? 0) > 0 &&\n faceAngle <= (settings.bottomAngleLimit ?? 0)\n : (settings.topAngleLimit ?? 0) > 0 &&\n faceAngle <= (settings.topAngleLimit ?? 0)\n\n const userExcluded = ewAttr\n ? (ewAttr[t] + ewAttr[t + 1] + ewAttr[t + 2]) / 3 > 0.99\n : false\n const faceMasked = angleMasked\n if (userExcluded && userExcludedFaces) userExcludedFaces[t / 3] = 1\n\n for (let v = 0; v < 3; v++) {\n const vid = vertexId[t + v]\n if (userExcluded && excludedPos) excludedPos[vid] = 1\n tmpNrm.set(nrmAttr[(t + v) * 3], nrmAttr[(t + v) * 3 + 1], nrmAttr[(t + v) * 3 + 2])\n smoothNrmX[vid] += tmpNrm.x * faceArea\n smoothNrmY[vid] += tmpNrm.y * faceArea\n smoothNrmZ[vid] += tmpNrm.z * faceArea\n if (faceMasked) maskedFracMasked[vid] += faceArea\n maskedFracTotal[vid] += faceArea\n }\n }\n\n // 归一化平滑法线\n for (let id = 0; id < uniqueCount; id++) {\n const len = Math.sqrt(\n smoothNrmX[id] * smoothNrmX[id] +\n smoothNrmY[id] * smoothNrmY[id] +\n smoothNrmZ[id] * smoothNrmZ[id],\n )\n const inv = len > 0 ? 1 / len : 1\n smoothNrmX[id] *= inv\n smoothNrmY[id] *= inv\n smoothNrmZ[id] *= inv\n }\n\n // ── Pass 2: 每个唯一顶点采样纹理一次 ──\n const dispCacheVal = new Float64Array(uniqueCount)\n const dispCacheSet = new Uint8Array(uniqueCount)\n\n for (let i = 0; i < count; i++) {\n const vid = vertexId[i]\n if (dispCacheSet[vid]) continue\n dispCacheSet[vid] = 1\n\n tmpPos.set(posAttr[i * 3], posAttr[i * 3 + 1], posAttr[i * 3 + 2])\n\n // Cubic 模式特殊处理\n if (settings.mappingMode === 6) {\n const md = Math.max(bounds.size.x, bounds.size.y, bounds.size.z, 1e-6)\n const rotRad = (settings.rotation ?? 0) * Math.PI / 180\n const cubicBlend = settings.mappingBlend ?? 0\n const cubicBandWidth = settings.seamBandWidth ?? 0.35\n\n const sn = {\n x: smoothNrmX[vid],\n y: smoothNrmY[vid],\n z: smoothNrmZ[vid],\n }\n const w = getCubicBlendWeights(sn, cubicBlend, cubicBandWidth)\n\n if (w.x + w.y + w.z > 0) {\n let grey = 0\n if (w.x > 0) {\n let rawU = (tmpPos.y - bounds.min.y) / md\n if (smoothNrmX[vid] < 0) rawU = -rawU\n const uv = _cubicUV(rawU, (tmpPos.z - bounds.min.z) / md, settings, rotRad, aspectU, aspectV)\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, uv.u, uv.v) * w.x\n }\n if (w.y > 0) {\n let rawU = (tmpPos.x - bounds.min.x) / md\n if (smoothNrmY[vid] > 0) rawU = -rawU\n const uv = _cubicUV(rawU, (tmpPos.z - bounds.min.z) / md, settings, rotRad, aspectU, aspectV)\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, uv.u, uv.v) * w.y\n }\n if (w.z > 0) {\n let rawU = (tmpPos.x - bounds.min.x) / md\n if (smoothNrmZ[vid] < 0) rawU = -rawU\n const uv = _cubicUV(rawU, (tmpPos.y - bounds.min.y) / md, settings, rotRad, aspectU, aspectV)\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, uv.u, uv.v) * w.z\n }\n dispCacheVal[vid] = grey\n continue\n }\n }\n\n // 其他模式:用平滑法线计算 UV\n tmpNrm.set(smoothNrmX[vid], smoothNrmY[vid], smoothNrmZ[vid])\n\n const uvResult = computeUV(tmpPos, tmpNrm, settings.mappingMode, settingsWithAspect, bounds)\n let grey: number\n if (uvResult.triplanar && uvResult.samples) {\n grey = 0\n for (const s of uvResult.samples) {\n grey += sampleBilinear(imageData.data, imgWidth, imgHeight, s.u, s.v) * s.w\n }\n } else {\n grey = sampleBilinear(imageData.data, imgWidth, imgHeight, uvResult.u, uvResult.v)\n }\n dispCacheVal[vid] = grey\n }\n\n // ── Pass 3: 每个顶点副本沿平滑法线位移 ──\n const REPORT_EVERY = 5000\n\n for (let i = 0; i < count; i++) {\n tmpPos.set(posAttr[i * 3], posAttr[i * 3 + 1], posAttr[i * 3 + 2])\n tmpNrm.set(nrmAttr[i * 3], nrmAttr[i * 3 + 1], nrmAttr[i * 3 + 2])\n\n const vid = vertexId[i]\n const grey = dispCacheVal[vid]\n\n const isFaceExcluded = userExcludedFaces && userExcludedFaces[Math.floor(i / 3)]\n const isSealedBoundary = !isFaceExcluded && excludedPos && excludedPos[vid] === 1\n const mfTotal = maskedFracTotal[vid]\n const maskedFrac = mfTotal > 0 ? maskedFracMasked[vid] / mfTotal : 0\n const centeredGrey = settings.symmetricDisplacement ? grey - 0.5 : grey\n const disp =\n isFaceExcluded || isSealedBoundary\n ? 0\n : (1 - maskedFrac) * centeredGrey * settings.amplitude\n\n const newX = tmpPos.x + smoothNrmX[vid] * disp\n const newY = tmpPos.y + smoothNrmY[vid] * disp\n let newZ = tmpPos.z + smoothNrmZ[vid] * disp\n\n // 防止边界顶点穿过遮罩表面\n if (maskedFrac > 0) {\n if ((settings.bottomAngleLimit ?? 0) > 0 && newZ < tmpPos.z) newZ = tmpPos.z\n if ((settings.topAngleLimit ?? 0) > 0 && newZ > tmpPos.z) newZ = tmpPos.z\n }\n\n newPos[i * 3] = newX\n newPos[i * 3 + 1] = newY\n newPos[i * 3 + 2] = newZ\n\n newNrm[i * 3] = tmpNrm.x\n newNrm[i * 3 + 1] = tmpNrm.y\n newNrm[i * 3 + 2] = tmpNrm.z\n\n if (onProgress && i % REPORT_EVERY === 0) onProgress(i / count)\n }\n\n // 从位移后位置计算精确的面法线\n const eA = new Vec3C()\n const eB = new Vec3C()\n const fn = new Vec3C()\n for (let t = 0; t < count; t += 3) {\n const ax = newPos[t * 3],\n ay = newPos[t * 3 + 1],\n az = newPos[t * 3 + 2]\n const bx = newPos[t * 3 + 3],\n by = newPos[t * 3 + 4],\n bz = newPos[t * 3 + 5]\n const cx = newPos[t * 3 + 6],\n cy = newPos[t * 3 + 7],\n cz = newPos[t * 3 + 8]\n eA.set(bx - ax, by - ay, bz - az)\n eB.set(cx - ax, cy - ay, cz - az)\n fn.crossVectors(eA, eB).normalize()\n for (let v = 0; v < 3; v++) {\n newNrm[(t + v) * 3] = fn.x\n newNrm[(t + v) * 3 + 1] = fn.y\n newNrm[(t + v) * 3 + 2] = fn.z\n }\n }\n\n const indices = new Uint32Array(count)\n for (let i = 0; i < count; i++) indices[i] = i\n return { positions: newPos, indices, normals: newNrm }\n}\n\n// ── 双线性采样 ──\n\nfunction sampleBilinear(\n data: Uint8ClampedArray | Uint8Array,\n w: number,\n h: number,\n u: number,\n v: number,\n): number {\n u = ((u % 1) + 1) % 1\n v = ((v % 1) + 1) % 1\n v = 1 - v\n\n const fx = u * w - 0.5\n const fy = v * h - 0.5\n let x0 = Math.floor(fx)\n let y0 = Math.floor(fy)\n const tx = fx - x0\n const ty = fy - y0\n const x1 = (x0 + 1 + w) % w\n const y1 = (y0 + 1 + h) % h\n x0 = ((x0 % w) + w) % w\n y0 = ((y0 % h) + h) % h\n\n const v00 = data[(y0 * w + x0) * 4] / 255\n const v10 = data[(y0 * w + x1) * 4] / 255\n const v01 = data[(y1 * w + x0) * 4] / 255\n const v11 = data[(y1 * w + x1) * 4] / 255\n\n return (\n v00 * (1 - tx) * (1 - ty) +\n v10 * tx * (1 - ty) +\n v01 * (1 - tx) * ty +\n v11 * tx * ty\n )\n}\n\nfunction _cubicUV(\n rawU: number,\n rawV: number,\n settings: DisplacementSettings,\n rotRad: number,\n aspectU: number,\n aspectV: number,\n): { u: number; v: number } {\n let u = (rawU * aspectU) / settings.scaleU + settings.offsetU\n let v = (rawV * aspectV) / settings.scaleV + settings.offsetV\n if (rotRad !== 0) {\n const c = Math.cos(rotRad),\n s = Math.sin(rotRad)\n u -= 0.5\n v -= 0.5\n const ru = c * u - s * v,\n rv = s * u + c * v\n u = ru + 0.5\n v = rv + 0.5\n }\n return { u: u - Math.floor(u), v: v - Math.floor(v) }\n}\n"]}
@@ -33,7 +33,7 @@
33
33
  * - E2E 测试通过:hasNaN: false, bounds 正确
34
34
  * - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]
35
35
  */
36
- import * as THREE from 'three';
36
+ import type { Shape } from '../types.js';
37
37
  /**
38
38
  * Adaptively subdivide a geometry until every edge is ≤ maxEdgeLength.
39
39
  * Indexed inputs are expanded to non-indexed form first; sharp edges are
@@ -47,8 +47,8 @@ import * as THREE from 'three';
47
47
  * @param faceWeights - optional per-face exclusion weights (non-indexed triangle soup layout).
48
48
  * @returns the subdivided non-indexed geometry and whether the safety cap was reached.
49
49
  */
50
- export declare function subdivide(geometry: THREE.BufferGeometry, maxEdgeLength: number, onProgress?: (p: number, triCount: number, longestEdge: number) => void, faceWeights?: Float32Array | null): Promise<{
51
- geometry: THREE.BufferGeometry;
50
+ export declare function subdivide(geometry: Shape, maxEdgeLength: number, onProgress?: (p: number, triCount: number, longestEdge: number) => void, faceWeights?: Float32Array | null): Promise<{
51
+ geometry: Shape;
52
52
  safetyCapHit: boolean;
53
53
  }>;
54
54
  //# sourceMappingURL=subdivision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subdivision.d.ts","sourceRoot":"","sources":["../../../src/mesh/knurl/subdivision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA6D9B;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,EACvE,WAAW,GAAE,YAAY,GAAG,IAAW,GACtC,OAAO,CAAC;IACT,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAA;IAC9B,YAAY,EAAE,OAAO,CAAA;CACtB,CAAC,CAsED"}
1
+ {"version":3,"file":"subdivision.d.ts","sourceRoot":"","sources":["../../../src/mesh/knurl/subdivision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AA8DrC;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,EACvE,WAAW,GAAE,YAAY,GAAG,IAAW,GACtC,OAAO,CAAC;IACT,QAAQ,EAAE,KAAK,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;CACtB,CAAC,CAuED"}
@@ -33,7 +33,7 @@
33
33
  * - E2E 测试通过:hasNaN: false, bounds 正确
34
34
  * - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]
35
35
  */
36
- import * as THREE from 'three';
36
+ import { toNonIndexed as shapeToNonIndexed } from '../meshdata/ops.js';
37
37
  import { QuantizedPointMap } from './meshIndex.js';
38
38
  // 10μm 顶点去重网格
39
39
  const QUANTISE = 1e5;
@@ -92,8 +92,9 @@ function makeVertStore(initialCap, hasWeights, hasCanon) {
92
92
  export async function subdivide(geometry, maxEdgeLength, onProgress, faceWeights = null) {
93
93
  // 确保 geometry 是 non-indexed(toIndexed 假设输入是 flat 的)
94
94
  let workingGeo = geometry;
95
- if (geometry.index) {
96
- workingGeo = geometry.toNonIndexed();
95
+ if (geometry.indices.length > 0) {
96
+ const ni = shapeToNonIndexed(geometry);
97
+ workingGeo = { positions: ni.positions, indices: ni.indices };
97
98
  }
98
99
  // 在 toIndexed 之前推导每面排除标记
99
100
  let initialFaceExcluded = null;
@@ -365,15 +366,15 @@ function getMidpoint(verts, cache, a, b, posCanonMap) {
365
366
  return idx;
366
367
  }
367
368
  function toIndexed(geometry, nonIndexedWeights = null) {
368
- const posAttr = geometry.attributes.position;
369
- const n = posAttr.count;
369
+ const positions = geometry.positions;
370
+ const n = positions.length / 3;
370
371
  // 预计算每个面的法线(单位 + 原始叉积)
371
372
  const faceNrmUnit = new Float32Array(n * 3);
372
373
  const faceNrmRaw = new Float32Array(n * 3);
373
374
  for (let t = 0; t < n; t += 3) {
374
- const ax = posAttr.getX(t), ay = posAttr.getY(t), az = posAttr.getZ(t);
375
- const bx = posAttr.getX(t + 1), by = posAttr.getY(t + 1), bz = posAttr.getZ(t + 1);
376
- const cx = posAttr.getX(t + 2), cy = posAttr.getY(t + 2), cz = posAttr.getZ(t + 2);
375
+ const ax = positions[t * 3], ay = positions[t * 3 + 1], az = positions[t * 3 + 2];
376
+ const bx = positions[(t + 1) * 3], by = positions[(t + 1) * 3 + 1], bz = positions[(t + 1) * 3 + 2];
377
+ const cx = positions[(t + 2) * 3], cy = positions[(t + 2) * 3 + 1], cz = positions[(t + 2) * 3 + 2];
377
378
  const e1x = bx - ax, e1y = by - ay, e1z = bz - az;
378
379
  const e2x = cx - ax, e2y = cy - ay, e2z = cz - az;
379
380
  const rx = e1y * e2z - e1z * e2y;
@@ -397,9 +398,9 @@ function toIndexed(geometry, nonIndexedWeights = null) {
397
398
  // canonical ID → cluster list at that position
398
399
  const clustersByCanon = new Map();
399
400
  for (let i = 0; i < n; i++) {
400
- const px = posAttr.getX(i);
401
- const py = posAttr.getY(i);
402
- const pz = posAttr.getZ(i);
401
+ const px = positions[i * 3];
402
+ const py = positions[i * 3 + 1];
403
+ const pz = positions[i * 3 + 2];
403
404
  const fnUx = faceNrmUnit[i * 3], fnUy = faceNrmUnit[i * 3 + 1], fnUz = faceNrmUnit[i * 3 + 2];
404
405
  const fnRx = faceNrmRaw[i * 3], fnRy = faceNrmRaw[i * 3 + 1], fnRz = faceNrmRaw[i * 3 + 2];
405
406
  // 第一个到达此位置的顶点成为 canonical ID
@@ -507,11 +508,16 @@ function toNonIndexed(verts, indices, faceExcluded = null) {
507
508
  wgtArray[t * 3 + v] = faceW !== null ? faceW : weights[vidx];
508
509
  }
509
510
  }
510
- const geo = new THREE.BufferGeometry();
511
- geo.setAttribute('position', new THREE.BufferAttribute(posArray, 3));
512
- geo.setAttribute('normal', new THREE.BufferAttribute(nrmArray, 3));
511
+ const seqIndices = new Uint32Array(triCount * 3);
512
+ for (let i = 0; i < seqIndices.length; i++)
513
+ seqIndices[i] = i;
514
+ const geo = {
515
+ positions: posArray,
516
+ indices: seqIndices,
517
+ normals: nrmArray,
518
+ };
513
519
  if (wgtArray)
514
- geo.setAttribute('excludeWeight', new THREE.BufferAttribute(wgtArray, 1));
520
+ geo.excludeWeight = wgtArray;
515
521
  return geo;
516
522
  }
517
523
  //# sourceMappingURL=subdivision.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subdivision.js","sourceRoot":"","sources":["../../../src/mesh/knurl/subdivision.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * subdivision.ts — 自适应边细分,从 stlTexturizer/js/subdivision.js 移植为 TS。\n *\n * 细分直到每条边 ≤ maxEdgeLength。\n *\n * 关键特性:\n * - toIndexed (export path): 锐边分裂 — 同位置但法线夹角 > 30° 的顶点分开存储\n * - 确保水密性\n *\n * 管线:\n * toIndexed(geometry) → 索引化 + 顶点去重 + 锐边分裂\n * 循环细分:标记长边 → 按标记数量分裂三角形\n * toNonIndexed(verts, indices) → 输出 non-indexed BufferGeometry\n *\n * Bug 修复记录 (2026-07-22):\n * 问题: 检测到 knurl 后的 mesh 出现 NaN 值和错误 bounds\n * (bounds 从 [-0.5, 0.5] 变成 [-17, 17],且 hasNaN: true)\n *\n * 根因分析:\n * 1. box_boss.3mf 是 indexed geometry (530 vertices, 1548 indices)\n * 2. toIndexed() 函数假设输入是 non-indexed (flat triangles)\n * 3. 当传入 indexed geometry 时,toIndexed() 错误处理顶点数据:\n * - n = posAttr.count = 530 (顶点数)\n * - 但代码按 triangle count = n/3 = 176 处理\n * - 导致顶点索引越界,读取错误位置的数据\n * 4. 细分后顶点位置完全错误,进而导致 displacement 计算产生 NaN\n *\n * 修复方案:\n * 在 subdivide() 入口添加 indexed → non-indexed 转换:\n * if (geometry.index) { workingGeo = geometry.toNonIndexed() }\n *\n * 验证:\n * - E2E 测试通过:hasNaN: false, bounds 正确\n * - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]\n */\n\nimport * as THREE from 'three'\nimport { QuantizedPointMap } from './meshIndex'\n\n// 10μm 顶点去重网格\nconst QUANTISE = 1e5\n// 安全上限\nconst SAFETY_CAP =\n typeof navigator !== 'undefined' &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory !== undefined &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory! >= 8\n ? 32_000_000\n : 16_000_000\n\n// 锐边角度阈值(度)— 法线夹角超过此值的顶点在索引化时分裂\nconst SHARP_ANGLE_DEG = 30\nconst SHARP_COS = Math.cos(SHARP_ANGLE_DEG * Math.PI / 180)\n\n// ── 可增长类型化顶点存储 ──\n\ninterface VertStore {\n cap: number\n count: number\n pos: Float64Array\n nrm: Float64Array\n wgt: Float64Array | null\n canon: Int32Array | null // 规范位置 ID(准确模式)\n grow(): void\n}\n\nfunction makeVertStore(initialCap: number, hasWeights: boolean, hasCanon: boolean): VertStore {\n return {\n cap: initialCap,\n count: 0,\n pos: new Float64Array(initialCap * 3),\n nrm: new Float64Array(initialCap * 3),\n wgt: hasWeights ? new Float64Array(initialCap) : null,\n canon: hasCanon ? new Int32Array(initialCap) : null,\n grow() {\n this.cap *= 2\n const np = new Float64Array(this.cap * 3)\n np.set(this.pos)\n this.pos = np\n const nn = new Float64Array(this.cap * 3)\n nn.set(this.nrm)\n this.nrm = nn\n if (this.wgt) {\n const nw = new Float64Array(this.cap)\n nw.set(this.wgt)\n this.wgt = nw\n }\n if (this.canon) {\n const nc = new Int32Array(this.cap)\n nc.set(this.canon)\n this.canon = nc\n }\n },\n }\n}\n\n// ── 公共入口 ──\n\n/**\n * Adaptively subdivide a geometry until every edge is ≤ maxEdgeLength.\n * Indexed inputs are expanded to non-indexed form first; sharp edges are\n * split at vertices whose face-normal angle exceeds the threshold so each\n * surface keeps its own normal direction and the result stays watertight.\n * Faces marked by `faceWeights` are excluded from refinement.\n *\n * @param geometry - the source geometry (position attribute; may be indexed).\n * @param maxEdgeLength - maximum allowed edge length in millimeters.\n * @param onProgress - optional callback receiving progress, triangle count, and longest edge.\n * @param faceWeights - optional per-face exclusion weights (non-indexed triangle soup layout).\n * @returns the subdivided non-indexed geometry and whether the safety cap was reached.\n */\nexport async function subdivide(\n geometry: THREE.BufferGeometry,\n maxEdgeLength: number,\n onProgress?: (p: number, triCount: number, longestEdge: number) => void,\n faceWeights: Float32Array | null = null,\n): Promise<{\n geometry: THREE.BufferGeometry\n safetyCapHit: boolean\n}> {\n // 确保 geometry 是 non-indexed(toIndexed 假设输入是 flat 的)\n let workingGeo = geometry\n if (geometry.index) {\n workingGeo = geometry.toNonIndexed()\n }\n\n // 在 toIndexed 之前推导每面排除标记\n let initialFaceExcluded: Uint8Array | null = null\n if (faceWeights) {\n const triCount = faceWeights.length / 3\n initialFaceExcluded = new Uint8Array(triCount)\n for (let i = 0; i < triCount; i++) {\n if (faceWeights[i * 3] > 0.99) initialFaceExcluded[i] = 1\n }\n }\n\n // 使用准确模式(带锐边分裂的 toIndexed)\n const { verts, indices, posCanonMap } = toIndexed(workingGeo, faceWeights)\n\n const maxIterations = 12\n let currentIndices = indices\n let currentFaceExcluded = initialFaceExcluded\n let safetyCapHit = false\n\n for (let iter = 0; iter < maxIterations; iter++) {\n const triCount = currentIndices.length / 3\n if (triCount >= SAFETY_CAP) {\n safetyCapHit = true\n break\n }\n\n const { newIndices, newFaceExcluded, changed, capped } = subdividePass(\n verts,\n currentIndices,\n maxEdgeLength,\n SAFETY_CAP,\n currentFaceExcluded,\n posCanonMap,\n )\n currentIndices = newIndices\n if (newFaceExcluded) currentFaceExcluded = newFaceExcluded\n\n if (capped || newIndices.length / 3 >= SAFETY_CAP) safetyCapHit = true\n\n const positions = verts.pos\n let maxEdgeLenSq = 0\n for (let t = 0; t < currentIndices.length; t += 3) {\n const a = currentIndices[t],\n b = currentIndices[t + 1],\n c = currentIndices[t + 2]\n const ab = edgeLenSq(positions, a, b)\n const bc = edgeLenSq(positions, b, c)\n const ca = edgeLenSq(positions, c, a)\n if (ab > maxEdgeLenSq) maxEdgeLenSq = ab\n if (bc > maxEdgeLenSq) maxEdgeLenSq = bc\n if (ca > maxEdgeLenSq) maxEdgeLenSq = ca\n }\n const longestEdge = Math.sqrt(maxEdgeLenSq)\n\n const newTriCount = newIndices.length / 3\n if (onProgress) onProgress(Math.min(0.95, (iter + 1) / maxIterations), newTriCount, longestEdge)\n await new Promise((r) => setTimeout(r, 0))\n if (!changed || safetyCapHit) break\n }\n\n return {\n geometry: toNonIndexed(verts, currentIndices, currentFaceExcluded),\n safetyCapHit,\n }\n}\n\n// ── 一次细分 pass ──\n\nfunction subdividePass(\n verts: VertStore,\n indices: Uint32Array,\n maxEdgeLength: number,\n safetyCap: number,\n faceExcluded: Uint8Array | null = null,\n posCanonMap: QuantizedPointMap | null = null,\n): {\n newIndices: Uint32Array\n newFaceExcluded: Uint8Array | null\n changed: boolean\n capped?: boolean\n} {\n const maxSq = maxEdgeLength * maxEdgeLength\n const midCache = new QuantizedPointMap(1, 1 << 16)\n const positions = verts.pos\n const canonIdx = verts.canon\n\n const splitEdges = new QuantizedPointMap(1, 1 << 16)\n const markEdge = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n if (u < v) splitEdges.getOrSet(u, v, 0, 1)\n else splitEdges.getOrSet(v, u, 0, 1)\n }\n const isMarked = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n return (u < v ? splitEdges.get(u, v, 0) : splitEdges.get(v, u, 0)) !== -1\n }\n\n // Step 1: 标记需要分裂的边\n for (let t = 0; t < indices.length; t += 3) {\n if (faceExcluded && faceExcluded[t / 3]) continue\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n if (edgeLenSq(positions, a, b) > maxSq) markEdge(a, b)\n if (edgeLenSq(positions, b, c) > maxSq) markEdge(b, c)\n if (edgeLenSq(positions, c, a) > maxSq) markEdge(c, a)\n }\n\n if (splitEdges.size === 0)\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false }\n\n // Step 1.5: 预测分裂后三角形数量\n let predictedTris = 0\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n predictedTris += n === 0 ? 1 : n + 1\n }\n if (predictedTris > safetyCap) {\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false, capped: true }\n }\n\n // Step 2: 重建索引列表\n const nextIndices = new Uint32Array(predictedTris * 3)\n const nextFaceExcluded = faceExcluded ? new Uint8Array(predictedTris) : null\n let wi = 0\n let fi = 0\n\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const fIdx = t / 3\n const excl = faceExcluded ? faceExcluded[fIdx] : 0\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n\n if (n === 0) {\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n } else if (n === 3) {\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n for (let k = 0; k < 4; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else if (n === 1) {\n if (sAB) {\n const m = getMidpoint(verts, midCache, a, b, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n } else if (sBC) {\n const m = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n } else {\n const m = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 2; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else {\n // n === 2: 3 sub-triangles, fan from the untouched-edge vertex\n if (!sAB) {\n // sBC + sCA: fan from C\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n } else if (!sBC) {\n // sAB + sCA: fan from A\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n } else {\n // sAB + sBC: fan from B\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mAB\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 3; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n }\n }\n\n return { newIndices: nextIndices, newFaceExcluded: nextFaceExcluded, changed: true }\n}\n\n// ── 辅助函数 ──\n\nfunction edgeLenSq(pos: Float64Array, a: number, b: number): number {\n const dx = pos[a * 3] - pos[b * 3]\n const dy = pos[a * 3 + 1] - pos[b * 3 + 1]\n const dz = pos[a * 3 + 2] - pos[b * 3 + 2]\n return dx * dx + dy * dy + dz * dz\n}\n\nfunction getMidpoint(\n verts: VertStore,\n cache: QuantizedPointMap,\n a: number,\n b: number,\n posCanonMap: QuantizedPointMap | null,\n): number {\n const lo = a < b ? a : b,\n hi = a < b ? b : a\n const cached = cache.get(lo, hi, 0)\n if (cached !== -1) return cached\n\n const pos = verts.pos,\n nrm = verts.nrm\n\n const mx = (pos[a * 3] + pos[b * 3]) / 2\n const my = (pos[a * 3 + 1] + pos[b * 3 + 1]) / 2\n const mz = (pos[a * 3 + 2] + pos[b * 3 + 2]) / 2\n\n const nx = nrm[a * 3] + nrm[b * 3]\n const ny = nrm[a * 3 + 1] + nrm[b * 3 + 1]\n const nz = nrm[a * 3 + 2] + nrm[b * 3 + 2]\n const nl = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = mx\n verts.pos[idx * 3 + 1] = my\n verts.pos[idx * 3 + 2] = mz\n verts.nrm[idx * 3] = nx / nl\n verts.nrm[idx * 3 + 1] = ny / nl\n verts.nrm[idx * 3 + 2] = nz / nl\n if (verts.wgt) verts.wgt[idx] = (verts.wgt[a] + verts.wgt[b]) / 2\n // 维护规范位置 ID\n if (verts.canon && posCanonMap) {\n verts.canon[idx] = posCanonMap.getOrSet(mx, my, mz, idx)\n }\n verts.count = idx + 1\n\n cache.getOrSet(lo, hi, 0, idx)\n return idx\n}\n\n// ── 准确模式:非 indexed → indexed(带锐边分裂) ──\n//\n// 关键:同一位置但法线夹角 > SHARP_ANGLE_DEG 的顶点会被分裂成不同的 indexed vertex。\n// 这确保立方体的每个面保持独立的法线方向,位移后不会产生破面。\n\ninterface ClusterInfo {\n idx: number\n fnU: [number, number, number] // 面法线单位向量(运行平均值)\n}\n\nfunction toIndexed(\n geometry: THREE.BufferGeometry,\n nonIndexedWeights: Float32Array | null = null,\n): { verts: VertStore; indices: Uint32Array; posCanonMap: QuantizedPointMap } {\n const posAttr = geometry.attributes.position\n const n = posAttr.count\n\n // 预计算每个面的法线(单位 + 原始叉积)\n const faceNrmUnit = new Float32Array(n * 3)\n const faceNrmRaw = new Float32Array(n * 3)\n for (let t = 0; t < n; t += 3) {\n const ax = posAttr.getX(t),\n ay = posAttr.getY(t),\n az = posAttr.getZ(t)\n const bx = posAttr.getX(t + 1),\n by = posAttr.getY(t + 1),\n bz = posAttr.getZ(t + 1)\n const cx = posAttr.getX(t + 2),\n cy = posAttr.getY(t + 2),\n cz = posAttr.getZ(t + 2)\n const e1x = bx - ax,\n e1y = by - ay,\n e1z = bz - az\n const e2x = cx - ax,\n e2y = cy - ay,\n e2z = cz - az\n const rx = e1y * e2z - e1z * e2y\n const ry = e1z * e2x - e1x * e2z\n const rz = e1x * e2y - e1y * e2x\n const len = Math.sqrt(rx * rx + ry * ry + rz * rz) || 1\n const ux = rx / len,\n uy = ry / len,\n uz = rz / len\n for (let v = 0; v < 3; v++) {\n faceNrmUnit[(t + v) * 3] = ux\n faceNrmUnit[(t + v) * 3 + 1] = uy\n faceNrmUnit[(t + v) * 3 + 2] = uz\n faceNrmRaw[(t + v) * 3] = rx\n faceNrmRaw[(t + v) * 3 + 1] = ry\n faceNrmRaw[(t + v) * 3 + 2] = rz\n }\n }\n\n const indices = new Uint32Array(n)\n const verts = makeVertStore(Math.max(16, Math.min(1 << 16, n)), !!nonIndexedWeights, true)\n // position → first vertex idx at that position (canonical ID)\n const posCanonMap = new QuantizedPointMap(QUANTISE, Math.min(n, 1 << 22))\n // canonical ID → cluster list at that position\n const clustersByCanon = new Map<number, ClusterInfo[]>()\n\n for (let i = 0; i < n; i++) {\n const px = posAttr.getX(i)\n const py = posAttr.getY(i)\n const pz = posAttr.getZ(i)\n const fnUx = faceNrmUnit[i * 3],\n fnUy = faceNrmUnit[i * 3 + 1],\n fnUz = faceNrmUnit[i * 3 + 2]\n const fnRx = faceNrmRaw[i * 3],\n fnRy = faceNrmRaw[i * 3 + 1],\n fnRz = faceNrmRaw[i * 3 + 2]\n\n // 第一个到达此位置的顶点成为 canonical ID\n const canonId = posCanonMap.getOrSet(px, py, pz, verts.count)\n const clusters = posCanonMap.inserted ? undefined : clustersByCanon.get(canonId)\n\n if (clusters) {\n let matched = false\n for (const cl of clusters) {\n const dot = cl.fnU[0] * fnUx + cl.fnU[1] * fnUy + cl.fnU[2] * fnUz\n if (dot >= SHARP_COS) {\n // 同一 smooth group — 累加面积加权法线\n const idx = cl.idx\n verts.nrm[idx * 3] += fnRx\n verts.nrm[idx * 3 + 1] += fnRy\n verts.nrm[idx * 3 + 2] += fnRz\n if (verts.wgt && nonIndexedWeights && nonIndexedWeights[i] > verts.wgt[idx]) {\n verts.wgt[idx] = nonIndexedWeights[i]\n }\n // 更新 cluster 代表法线为运行平均值\n cl.fnU[0] += fnUx\n cl.fnU[1] += fnUy\n cl.fnU[2] += fnUz\n const rl =\n Math.sqrt(cl.fnU[0] * cl.fnU[0] + cl.fnU[1] * cl.fnU[1] + cl.fnU[2] * cl.fnU[2]) || 1\n cl.fnU[0] /= rl\n cl.fnU[1] /= rl\n cl.fnU[2] /= rl\n indices[i] = idx\n matched = true\n break\n }\n }\n if (!matched) {\n // 此位置的新 cluster(锐边分裂)\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clusters.push({ idx, fnU: [fnUx, fnUy, fnUz] })\n indices[i] = idx\n }\n } else {\n // 此位置的第一个顶点\n const idx = verts.count // === canonId\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clustersByCanon.set(canonId, [{ idx, fnU: [fnUx, fnUy, fnUz] }])\n indices[i] = idx\n }\n }\n\n normalizeStoreNormals(verts)\n return { verts, indices, posCanonMap }\n}\n\nfunction normalizeStoreNormals(verts: VertStore): void {\n const nrm = verts.nrm\n for (let i = 0; i < verts.count; i++) {\n const nx = nrm[i * 3]\n const ny = nrm[i * 3 + 1]\n const nz = nrm[i * 3 + 2]\n const len = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n nrm[i * 3] = nx / len\n nrm[i * 3 + 1] = ny / len\n nrm[i * 3 + 2] = nz / len\n }\n}\n\n// ── Indexed → non-indexed ──\n\nfunction toNonIndexed(\n verts: VertStore,\n indices: Uint32Array,\n faceExcluded: Uint8Array | null = null,\n): THREE.BufferGeometry {\n const positions = verts.pos,\n normals = verts.nrm,\n weights = verts.wgt\n const triCount = indices.length / 3\n const posArray = new Float32Array(triCount * 9)\n const nrmArray = new Float32Array(triCount * 9)\n const wgtArray = faceExcluded || weights ? new Float32Array(triCount * 3) : null\n\n for (let t = 0; t < triCount; t++) {\n const faceW = faceExcluded ? (faceExcluded[t] ? 1.0 : 0.0) : null\n for (let v = 0; v < 3; v++) {\n const vidx = indices[t * 3 + v]\n posArray[t * 9 + v * 3] = positions[vidx * 3]\n posArray[t * 9 + v * 3 + 1] = positions[vidx * 3 + 1]\n posArray[t * 9 + v * 3 + 2] = positions[vidx * 3 + 2]\n\n nrmArray[t * 9 + v * 3] = normals[vidx * 3]\n nrmArray[t * 9 + v * 3 + 1] = normals[vidx * 3 + 1]\n nrmArray[t * 9 + v * 3 + 2] = normals[vidx * 3 + 2]\n\n if (wgtArray) wgtArray[t * 3 + v] = faceW !== null ? faceW : weights![vidx]\n }\n }\n\n const geo = new THREE.BufferGeometry()\n geo.setAttribute('position', new THREE.BufferAttribute(posArray, 3))\n geo.setAttribute('normal', new THREE.BufferAttribute(nrmArray, 3))\n if (wgtArray) geo.setAttribute('excludeWeight', new THREE.BufferAttribute(wgtArray, 1))\n return geo\n}\n"]}
1
+ {"version":3,"file":"subdivision.js","sourceRoot":"","sources":["../../../src/mesh/knurl/subdivision.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * subdivision.ts — 自适应边细分,从 stlTexturizer/js/subdivision.js 移植为 TS。\n *\n * 细分直到每条边 ≤ maxEdgeLength。\n *\n * 关键特性:\n * - toIndexed (export path): 锐边分裂 — 同位置但法线夹角 > 30° 的顶点分开存储\n * - 确保水密性\n *\n * 管线:\n * toIndexed(geometry) → 索引化 + 顶点去重 + 锐边分裂\n * 循环细分:标记长边 → 按标记数量分裂三角形\n * toNonIndexed(verts, indices) → 输出 non-indexed BufferGeometry\n *\n * Bug 修复记录 (2026-07-22):\n * 问题: 检测到 knurl 后的 mesh 出现 NaN 值和错误 bounds\n * (bounds 从 [-0.5, 0.5] 变成 [-17, 17],且 hasNaN: true)\n *\n * 根因分析:\n * 1. box_boss.3mf 是 indexed geometry (530 vertices, 1548 indices)\n * 2. toIndexed() 函数假设输入是 non-indexed (flat triangles)\n * 3. 当传入 indexed geometry 时,toIndexed() 错误处理顶点数据:\n * - n = posAttr.count = 530 (顶点数)\n * - 但代码按 triangle count = n/3 = 176 处理\n * - 导致顶点索引越界,读取错误位置的数据\n * 4. 细分后顶点位置完全错误,进而导致 displacement 计算产生 NaN\n *\n * 修复方案:\n * 在 subdivide() 入口添加 indexed → non-indexed 转换:\n * if (geometry.index) { workingGeo = geometry.toNonIndexed() }\n *\n * 验证:\n * - E2E 测试通过:hasNaN: false, bounds 正确\n * - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]\n */\n\nimport type { Shape } from '../types'\nimport { toNonIndexed as shapeToNonIndexed } from '../meshdata/ops'\nimport { QuantizedPointMap } from './meshIndex'\n\n// 10μm 顶点去重网格\nconst QUANTISE = 1e5\n// 安全上限\nconst SAFETY_CAP =\n typeof navigator !== 'undefined' &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory !== undefined &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory! >= 8\n ? 32_000_000\n : 16_000_000\n\n// 锐边角度阈值(度)— 法线夹角超过此值的顶点在索引化时分裂\nconst SHARP_ANGLE_DEG = 30\nconst SHARP_COS = Math.cos(SHARP_ANGLE_DEG * Math.PI / 180)\n\n// ── 可增长类型化顶点存储 ──\n\ninterface VertStore {\n cap: number\n count: number\n pos: Float64Array\n nrm: Float64Array\n wgt: Float64Array | null\n canon: Int32Array | null // 规范位置 ID(准确模式)\n grow(): void\n}\n\nfunction makeVertStore(initialCap: number, hasWeights: boolean, hasCanon: boolean): VertStore {\n return {\n cap: initialCap,\n count: 0,\n pos: new Float64Array(initialCap * 3),\n nrm: new Float64Array(initialCap * 3),\n wgt: hasWeights ? new Float64Array(initialCap) : null,\n canon: hasCanon ? new Int32Array(initialCap) : null,\n grow() {\n this.cap *= 2\n const np = new Float64Array(this.cap * 3)\n np.set(this.pos)\n this.pos = np\n const nn = new Float64Array(this.cap * 3)\n nn.set(this.nrm)\n this.nrm = nn\n if (this.wgt) {\n const nw = new Float64Array(this.cap)\n nw.set(this.wgt)\n this.wgt = nw\n }\n if (this.canon) {\n const nc = new Int32Array(this.cap)\n nc.set(this.canon)\n this.canon = nc\n }\n },\n }\n}\n\n// ── 公共入口 ──\n\n/**\n * Adaptively subdivide a geometry until every edge is ≤ maxEdgeLength.\n * Indexed inputs are expanded to non-indexed form first; sharp edges are\n * split at vertices whose face-normal angle exceeds the threshold so each\n * surface keeps its own normal direction and the result stays watertight.\n * Faces marked by `faceWeights` are excluded from refinement.\n *\n * @param geometry - the source geometry (position attribute; may be indexed).\n * @param maxEdgeLength - maximum allowed edge length in millimeters.\n * @param onProgress - optional callback receiving progress, triangle count, and longest edge.\n * @param faceWeights - optional per-face exclusion weights (non-indexed triangle soup layout).\n * @returns the subdivided non-indexed geometry and whether the safety cap was reached.\n */\nexport async function subdivide(\n geometry: Shape,\n maxEdgeLength: number,\n onProgress?: (p: number, triCount: number, longestEdge: number) => void,\n faceWeights: Float32Array | null = null,\n): Promise<{\n geometry: Shape\n safetyCapHit: boolean\n}> {\n // 确保 geometry 是 non-indexed(toIndexed 假设输入是 flat 的)\n let workingGeo: Shape = geometry\n if (geometry.indices.length > 0) {\n const ni = shapeToNonIndexed(geometry)\n workingGeo = { positions: ni.positions, indices: ni.indices }\n }\n\n // 在 toIndexed 之前推导每面排除标记\n let initialFaceExcluded: Uint8Array | null = null\n if (faceWeights) {\n const triCount = faceWeights.length / 3\n initialFaceExcluded = new Uint8Array(triCount)\n for (let i = 0; i < triCount; i++) {\n if (faceWeights[i * 3] > 0.99) initialFaceExcluded[i] = 1\n }\n }\n\n // 使用准确模式(带锐边分裂的 toIndexed)\n const { verts, indices, posCanonMap } = toIndexed(workingGeo, faceWeights)\n\n const maxIterations = 12\n let currentIndices = indices\n let currentFaceExcluded = initialFaceExcluded\n let safetyCapHit = false\n\n for (let iter = 0; iter < maxIterations; iter++) {\n const triCount = currentIndices.length / 3\n if (triCount >= SAFETY_CAP) {\n safetyCapHit = true\n break\n }\n\n const { newIndices, newFaceExcluded, changed, capped } = subdividePass(\n verts,\n currentIndices,\n maxEdgeLength,\n SAFETY_CAP,\n currentFaceExcluded,\n posCanonMap,\n )\n currentIndices = newIndices\n if (newFaceExcluded) currentFaceExcluded = newFaceExcluded\n\n if (capped || newIndices.length / 3 >= SAFETY_CAP) safetyCapHit = true\n\n const positions = verts.pos\n let maxEdgeLenSq = 0\n for (let t = 0; t < currentIndices.length; t += 3) {\n const a = currentIndices[t],\n b = currentIndices[t + 1],\n c = currentIndices[t + 2]\n const ab = edgeLenSq(positions, a, b)\n const bc = edgeLenSq(positions, b, c)\n const ca = edgeLenSq(positions, c, a)\n if (ab > maxEdgeLenSq) maxEdgeLenSq = ab\n if (bc > maxEdgeLenSq) maxEdgeLenSq = bc\n if (ca > maxEdgeLenSq) maxEdgeLenSq = ca\n }\n const longestEdge = Math.sqrt(maxEdgeLenSq)\n\n const newTriCount = newIndices.length / 3\n if (onProgress) onProgress(Math.min(0.95, (iter + 1) / maxIterations), newTriCount, longestEdge)\n await new Promise((r) => setTimeout(r, 0))\n if (!changed || safetyCapHit) break\n }\n\n return {\n geometry: toNonIndexed(verts, currentIndices, currentFaceExcluded),\n safetyCapHit,\n }\n}\n\n// ── 一次细分 pass ──\n\nfunction subdividePass(\n verts: VertStore,\n indices: Uint32Array,\n maxEdgeLength: number,\n safetyCap: number,\n faceExcluded: Uint8Array | null = null,\n posCanonMap: QuantizedPointMap | null = null,\n): {\n newIndices: Uint32Array\n newFaceExcluded: Uint8Array | null\n changed: boolean\n capped?: boolean\n} {\n const maxSq = maxEdgeLength * maxEdgeLength\n const midCache = new QuantizedPointMap(1, 1 << 16)\n const positions = verts.pos\n const canonIdx = verts.canon\n\n const splitEdges = new QuantizedPointMap(1, 1 << 16)\n const markEdge = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n if (u < v) splitEdges.getOrSet(u, v, 0, 1)\n else splitEdges.getOrSet(v, u, 0, 1)\n }\n const isMarked = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n return (u < v ? splitEdges.get(u, v, 0) : splitEdges.get(v, u, 0)) !== -1\n }\n\n // Step 1: 标记需要分裂的边\n for (let t = 0; t < indices.length; t += 3) {\n if (faceExcluded && faceExcluded[t / 3]) continue\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n if (edgeLenSq(positions, a, b) > maxSq) markEdge(a, b)\n if (edgeLenSq(positions, b, c) > maxSq) markEdge(b, c)\n if (edgeLenSq(positions, c, a) > maxSq) markEdge(c, a)\n }\n\n if (splitEdges.size === 0)\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false }\n\n // Step 1.5: 预测分裂后三角形数量\n let predictedTris = 0\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n predictedTris += n === 0 ? 1 : n + 1\n }\n if (predictedTris > safetyCap) {\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false, capped: true }\n }\n\n // Step 2: 重建索引列表\n const nextIndices = new Uint32Array(predictedTris * 3)\n const nextFaceExcluded = faceExcluded ? new Uint8Array(predictedTris) : null\n let wi = 0\n let fi = 0\n\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const fIdx = t / 3\n const excl = faceExcluded ? faceExcluded[fIdx] : 0\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n\n if (n === 0) {\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n } else if (n === 3) {\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n for (let k = 0; k < 4; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else if (n === 1) {\n if (sAB) {\n const m = getMidpoint(verts, midCache, a, b, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n } else if (sBC) {\n const m = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n } else {\n const m = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 2; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else {\n // n === 2: 3 sub-triangles, fan from the untouched-edge vertex\n if (!sAB) {\n // sBC + sCA: fan from C\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n } else if (!sBC) {\n // sAB + sCA: fan from A\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n } else {\n // sAB + sBC: fan from B\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mAB\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 3; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n }\n }\n\n return { newIndices: nextIndices, newFaceExcluded: nextFaceExcluded, changed: true }\n}\n\n// ── 辅助函数 ──\n\nfunction edgeLenSq(pos: Float64Array, a: number, b: number): number {\n const dx = pos[a * 3] - pos[b * 3]\n const dy = pos[a * 3 + 1] - pos[b * 3 + 1]\n const dz = pos[a * 3 + 2] - pos[b * 3 + 2]\n return dx * dx + dy * dy + dz * dz\n}\n\nfunction getMidpoint(\n verts: VertStore,\n cache: QuantizedPointMap,\n a: number,\n b: number,\n posCanonMap: QuantizedPointMap | null,\n): number {\n const lo = a < b ? a : b,\n hi = a < b ? b : a\n const cached = cache.get(lo, hi, 0)\n if (cached !== -1) return cached\n\n const pos = verts.pos,\n nrm = verts.nrm\n\n const mx = (pos[a * 3] + pos[b * 3]) / 2\n const my = (pos[a * 3 + 1] + pos[b * 3 + 1]) / 2\n const mz = (pos[a * 3 + 2] + pos[b * 3 + 2]) / 2\n\n const nx = nrm[a * 3] + nrm[b * 3]\n const ny = nrm[a * 3 + 1] + nrm[b * 3 + 1]\n const nz = nrm[a * 3 + 2] + nrm[b * 3 + 2]\n const nl = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = mx\n verts.pos[idx * 3 + 1] = my\n verts.pos[idx * 3 + 2] = mz\n verts.nrm[idx * 3] = nx / nl\n verts.nrm[idx * 3 + 1] = ny / nl\n verts.nrm[idx * 3 + 2] = nz / nl\n if (verts.wgt) verts.wgt[idx] = (verts.wgt[a] + verts.wgt[b]) / 2\n // 维护规范位置 ID\n if (verts.canon && posCanonMap) {\n verts.canon[idx] = posCanonMap.getOrSet(mx, my, mz, idx)\n }\n verts.count = idx + 1\n\n cache.getOrSet(lo, hi, 0, idx)\n return idx\n}\n\n// ── 准确模式:非 indexed → indexed(带锐边分裂) ──\n//\n// 关键:同一位置但法线夹角 > SHARP_ANGLE_DEG 的顶点会被分裂成不同的 indexed vertex。\n// 这确保立方体的每个面保持独立的法线方向,位移后不会产生破面。\n\ninterface ClusterInfo {\n idx: number\n fnU: [number, number, number] // 面法线单位向量(运行平均值)\n}\n\nfunction toIndexed(\n geometry: Shape,\n nonIndexedWeights: Float32Array | null = null,\n): { verts: VertStore; indices: Uint32Array; posCanonMap: QuantizedPointMap } {\n const positions = geometry.positions\n const n = positions.length / 3\n\n // 预计算每个面的法线(单位 + 原始叉积)\n const faceNrmUnit = new Float32Array(n * 3)\n const faceNrmRaw = new Float32Array(n * 3)\n for (let t = 0; t < n; t += 3) {\n const ax = positions[t * 3],\n ay = positions[t * 3 + 1],\n az = positions[t * 3 + 2]\n const bx = positions[(t + 1) * 3],\n by = positions[(t + 1) * 3 + 1],\n bz = positions[(t + 1) * 3 + 2]\n const cx = positions[(t + 2) * 3],\n cy = positions[(t + 2) * 3 + 1],\n cz = positions[(t + 2) * 3 + 2]\n const e1x = bx - ax,\n e1y = by - ay,\n e1z = bz - az\n const e2x = cx - ax,\n e2y = cy - ay,\n e2z = cz - az\n const rx = e1y * e2z - e1z * e2y\n const ry = e1z * e2x - e1x * e2z\n const rz = e1x * e2y - e1y * e2x\n const len = Math.sqrt(rx * rx + ry * ry + rz * rz) || 1\n const ux = rx / len,\n uy = ry / len,\n uz = rz / len\n for (let v = 0; v < 3; v++) {\n faceNrmUnit[(t + v) * 3] = ux\n faceNrmUnit[(t + v) * 3 + 1] = uy\n faceNrmUnit[(t + v) * 3 + 2] = uz\n faceNrmRaw[(t + v) * 3] = rx\n faceNrmRaw[(t + v) * 3 + 1] = ry\n faceNrmRaw[(t + v) * 3 + 2] = rz\n }\n }\n\n const indices = new Uint32Array(n)\n const verts = makeVertStore(Math.max(16, Math.min(1 << 16, n)), !!nonIndexedWeights, true)\n // position → first vertex idx at that position (canonical ID)\n const posCanonMap = new QuantizedPointMap(QUANTISE, Math.min(n, 1 << 22))\n // canonical ID → cluster list at that position\n const clustersByCanon = new Map<number, ClusterInfo[]>()\n\n for (let i = 0; i < n; i++) {\n const px = positions[i * 3]\n const py = positions[i * 3 + 1]\n const pz = positions[i * 3 + 2]\n const fnUx = faceNrmUnit[i * 3],\n fnUy = faceNrmUnit[i * 3 + 1],\n fnUz = faceNrmUnit[i * 3 + 2]\n const fnRx = faceNrmRaw[i * 3],\n fnRy = faceNrmRaw[i * 3 + 1],\n fnRz = faceNrmRaw[i * 3 + 2]\n\n // 第一个到达此位置的顶点成为 canonical ID\n const canonId = posCanonMap.getOrSet(px, py, pz, verts.count)\n const clusters = posCanonMap.inserted ? undefined : clustersByCanon.get(canonId)\n\n if (clusters) {\n let matched = false\n for (const cl of clusters) {\n const dot = cl.fnU[0] * fnUx + cl.fnU[1] * fnUy + cl.fnU[2] * fnUz\n if (dot >= SHARP_COS) {\n // 同一 smooth group — 累加面积加权法线\n const idx = cl.idx\n verts.nrm[idx * 3] += fnRx\n verts.nrm[idx * 3 + 1] += fnRy\n verts.nrm[idx * 3 + 2] += fnRz\n if (verts.wgt && nonIndexedWeights && nonIndexedWeights[i] > verts.wgt[idx]) {\n verts.wgt[idx] = nonIndexedWeights[i]\n }\n // 更新 cluster 代表法线为运行平均值\n cl.fnU[0] += fnUx\n cl.fnU[1] += fnUy\n cl.fnU[2] += fnUz\n const rl =\n Math.sqrt(cl.fnU[0] * cl.fnU[0] + cl.fnU[1] * cl.fnU[1] + cl.fnU[2] * cl.fnU[2]) || 1\n cl.fnU[0] /= rl\n cl.fnU[1] /= rl\n cl.fnU[2] /= rl\n indices[i] = idx\n matched = true\n break\n }\n }\n if (!matched) {\n // 此位置的新 cluster(锐边分裂)\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clusters.push({ idx, fnU: [fnUx, fnUy, fnUz] })\n indices[i] = idx\n }\n } else {\n // 此位置的第一个顶点\n const idx = verts.count // === canonId\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clustersByCanon.set(canonId, [{ idx, fnU: [fnUx, fnUy, fnUz] }])\n indices[i] = idx\n }\n }\n\n normalizeStoreNormals(verts)\n return { verts, indices, posCanonMap }\n}\n\nfunction normalizeStoreNormals(verts: VertStore): void {\n const nrm = verts.nrm\n for (let i = 0; i < verts.count; i++) {\n const nx = nrm[i * 3]\n const ny = nrm[i * 3 + 1]\n const nz = nrm[i * 3 + 2]\n const len = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n nrm[i * 3] = nx / len\n nrm[i * 3 + 1] = ny / len\n nrm[i * 3 + 2] = nz / len\n }\n}\n\n// ── Indexed → non-indexed ──\n\nfunction toNonIndexed(\n verts: VertStore,\n indices: Uint32Array,\n faceExcluded: Uint8Array | null = null,\n): Shape {\n const positions = verts.pos,\n normals = verts.nrm,\n weights = verts.wgt\n const triCount = indices.length / 3\n const posArray = new Float32Array(triCount * 9)\n const nrmArray = new Float32Array(triCount * 9)\n const wgtArray = faceExcluded || weights ? new Float32Array(triCount * 3) : null\n\n for (let t = 0; t < triCount; t++) {\n const faceW = faceExcluded ? (faceExcluded[t] ? 1.0 : 0.0) : null\n for (let v = 0; v < 3; v++) {\n const vidx = indices[t * 3 + v]\n posArray[t * 9 + v * 3] = positions[vidx * 3]\n posArray[t * 9 + v * 3 + 1] = positions[vidx * 3 + 1]\n posArray[t * 9 + v * 3 + 2] = positions[vidx * 3 + 2]\n\n nrmArray[t * 9 + v * 3] = normals[vidx * 3]\n nrmArray[t * 9 + v * 3 + 1] = normals[vidx * 3 + 1]\n nrmArray[t * 9 + v * 3 + 2] = normals[vidx * 3 + 2]\n\n if (wgtArray) wgtArray[t * 3 + v] = faceW !== null ? faceW : weights![vidx]\n }\n }\n\n const seqIndices = new Uint32Array(triCount * 3)\n for (let i = 0; i < seqIndices.length; i++) seqIndices[i] = i\n const geo: Shape = {\n positions: posArray,\n indices: seqIndices,\n normals: nrmArray,\n }\n if (wgtArray) (geo as Shape & { excludeWeight?: Float32Array }).excludeWeight = wgtArray\n return geo\n}\n"]}
@@ -9,7 +9,7 @@
9
9
  * 在整个浏览器页面中,滚花纹理只应加载一次。
10
10
  * 多个 CadRuntime 实例共享同一个纹理加载器是正确的行为。
11
11
  */
12
- import * as THREE from 'three';
12
+ import type { Box3 } from '../../math3d/index.js';
13
13
  /**
14
14
  * Raw RGBA pixel data plus the pixel dimensions of a loaded texture.
15
15
  */
@@ -33,6 +33,6 @@ export declare function setKnurlTextureLoader(loader: (() => Promise<TextureData
33
33
  export declare function loadKnurlingTexture(): Promise<TextureData | null>;
34
34
  /** Dispose the knurl preview material; a no-op in the headless engine. */
35
35
  export declare function disposeKnurlPreviewMaterial(): void;
36
- /** Bounds type shared with the knurl preview path (a THREE.Box3). */
37
- export type KnurlPreviewBounds = THREE.Box3;
36
+ /** Bounds type shared with the knurl preview path (a math3d Box3). */
37
+ export type KnurlPreviewBounds = Box3;
38
38
  //# sourceMappingURL=textureLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"textureLoader.d.ts","sourceRoot":"","sources":["../../../src/mesh/knurl/textureLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAKD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAE9F;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOvE;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"textureLoader.d.ts","sourceRoot":"","sources":["../../../src/mesh/knurl/textureLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAKD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAE9F;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOvE;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAA"}