@math.gl/geometry 5.0.0-alpha.2 → 5.0.0-alpha.20

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 (381) hide show
  1. package/LICENSE +97 -49
  2. package/README.md +16 -1
  3. package/THIRD-PARTY-NOTICES.md +18 -0
  4. package/dist/culling/constants.d.ts +3 -0
  5. package/dist/culling/constants.d.ts.map +1 -0
  6. package/dist/culling/constants.js +5 -0
  7. package/dist/culling/constants.js.map +1 -0
  8. package/dist/culling/index.cjs +2014 -0
  9. package/dist/culling/index.cjs.map +6 -0
  10. package/dist/culling/index.d.ts +29 -0
  11. package/dist/culling/index.d.ts.map +1 -0
  12. package/dist/culling/index.js +23 -0
  13. package/dist/culling/index.js.map +1 -0
  14. package/dist/culling/lib/algorithms/bounding-box-from-points.d.ts +15 -0
  15. package/dist/culling/lib/algorithms/bounding-box-from-points.d.ts.map +1 -0
  16. package/dist/culling/lib/algorithms/bounding-box-from-points.js +137 -0
  17. package/dist/culling/lib/algorithms/bounding-box-from-points.js.map +1 -0
  18. package/dist/culling/lib/algorithms/bounding-sphere-from-points.d.ts +14 -0
  19. package/dist/culling/lib/algorithms/bounding-sphere-from-points.d.ts.map +1 -0
  20. package/dist/culling/lib/algorithms/bounding-sphere-from-points.js +146 -0
  21. package/dist/culling/lib/algorithms/bounding-sphere-from-points.js.map +1 -0
  22. package/dist/culling/lib/algorithms/compute-eigen-decomposition.d.ts +37 -0
  23. package/dist/culling/lib/algorithms/compute-eigen-decomposition.d.ts.map +1 -0
  24. package/dist/culling/lib/algorithms/compute-eigen-decomposition.js +137 -0
  25. package/dist/culling/lib/algorithms/compute-eigen-decomposition.js.map +1 -0
  26. package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.d.ts +7 -0
  27. package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.d.ts.map +1 -0
  28. package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.js +26 -0
  29. package/dist/culling/lib/algorithms/oriented-bounding-box-quaternion.js.map +1 -0
  30. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.d.ts +56 -0
  31. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.d.ts.map +1 -0
  32. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.js +116 -0
  33. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.js.map +1 -0
  34. package/dist/culling/lib/bounding-volumes/bounding-sphere.d.ts +40 -0
  35. package/dist/culling/lib/bounding-volumes/bounding-sphere.d.ts.map +1 -0
  36. package/dist/culling/lib/bounding-volumes/bounding-sphere.js +123 -0
  37. package/dist/culling/lib/bounding-volumes/bounding-sphere.js.map +1 -0
  38. package/dist/culling/lib/bounding-volumes/bounding-volume.d.ts +30 -0
  39. package/dist/culling/lib/bounding-volumes/bounding-volume.d.ts.map +1 -0
  40. package/dist/culling/lib/bounding-volumes/bounding-volume.js +7 -0
  41. package/dist/culling/lib/bounding-volumes/bounding-volume.js.map +1 -0
  42. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.d.ts +62 -0
  43. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.d.ts.map +1 -0
  44. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.js +230 -0
  45. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.js.map +1 -0
  46. package/dist/culling/lib/culling-volume.d.ts +46 -0
  47. package/dist/culling/lib/culling-volume.d.ts.map +1 -0
  48. package/dist/culling/lib/culling-volume.js +126 -0
  49. package/dist/culling/lib/culling-volume.js.map +1 -0
  50. package/dist/culling/lib/perspective-frustum.d.ts +153 -0
  51. package/dist/culling/lib/perspective-frustum.d.ts.map +1 -0
  52. package/dist/culling/lib/perspective-frustum.js +191 -0
  53. package/dist/culling/lib/perspective-frustum.js.map +1 -0
  54. package/dist/culling/lib/perspective-off-center-frustum.d.ts +158 -0
  55. package/dist/culling/lib/perspective-off-center-frustum.d.ts.map +1 -0
  56. package/dist/culling/lib/perspective-off-center-frustum.js +276 -0
  57. package/dist/culling/lib/perspective-off-center-frustum.js.map +1 -0
  58. package/dist/culling/lib/plane.d.ts +35 -0
  59. package/dist/culling/lib/plane.d.ts.map +1 -0
  60. package/dist/culling/lib/plane.js +90 -0
  61. package/dist/culling/lib/plane.js.map +1 -0
  62. package/dist/culling/lib/ray.d.ts +13 -0
  63. package/dist/culling/lib/ray.d.ts.map +1 -0
  64. package/dist/culling/lib/ray.js +30 -0
  65. package/dist/culling/lib/ray.js.map +1 -0
  66. package/dist/culling/lib/shapes/box-shape.d.ts +19 -0
  67. package/dist/culling/lib/shapes/box-shape.d.ts.map +1 -0
  68. package/dist/culling/lib/shapes/box-shape.js +69 -0
  69. package/dist/culling/lib/shapes/box-shape.js.map +1 -0
  70. package/dist/culling/lib/shapes/capsule-shape.d.ts +23 -0
  71. package/dist/culling/lib/shapes/capsule-shape.d.ts.map +1 -0
  72. package/dist/culling/lib/shapes/capsule-shape.js +151 -0
  73. package/dist/culling/lib/shapes/capsule-shape.js.map +1 -0
  74. package/dist/culling/lib/shapes/cylinder-shape.d.ts +22 -0
  75. package/dist/culling/lib/shapes/cylinder-shape.d.ts.map +1 -0
  76. package/dist/culling/lib/shapes/cylinder-shape.js +99 -0
  77. package/dist/culling/lib/shapes/cylinder-shape.js.map +1 -0
  78. package/dist/culling/lib/shapes/implicit-shape.d.ts +56 -0
  79. package/dist/culling/lib/shapes/implicit-shape.d.ts.map +1 -0
  80. package/dist/culling/lib/shapes/implicit-shape.js +142 -0
  81. package/dist/culling/lib/shapes/implicit-shape.js.map +1 -0
  82. package/dist/culling/lib/shapes/plane-shape.d.ts +27 -0
  83. package/dist/culling/lib/shapes/plane-shape.d.ts.map +1 -0
  84. package/dist/culling/lib/shapes/plane-shape.js +71 -0
  85. package/dist/culling/lib/shapes/plane-shape.js.map +1 -0
  86. package/dist/culling/lib/shapes/sphere-shape.d.ts +18 -0
  87. package/dist/culling/lib/shapes/sphere-shape.d.ts.map +1 -0
  88. package/dist/culling/lib/shapes/sphere-shape.js +43 -0
  89. package/dist/culling/lib/shapes/sphere-shape.js.map +1 -0
  90. package/dist/culling/oriented-box-2d.cjs +73 -0
  91. package/dist/culling/oriented-box-2d.cjs.map +6 -0
  92. package/dist/culling/oriented-box-2d.d.ts +22 -0
  93. package/dist/culling/oriented-box-2d.d.ts.map +1 -0
  94. package/dist/culling/oriented-box-2d.js +86 -0
  95. package/dist/culling/oriented-box-2d.js.map +1 -0
  96. package/dist/culling/queries.cjs +161 -0
  97. package/dist/culling/queries.cjs.map +6 -0
  98. package/dist/culling/queries.d.ts +20 -0
  99. package/dist/culling/queries.d.ts.map +1 -0
  100. package/dist/culling/queries.js +139 -0
  101. package/dist/culling/queries.js.map +1 -0
  102. package/dist/curves/bezier-curves.d.ts +18 -0
  103. package/dist/curves/bezier-curves.d.ts.map +1 -0
  104. package/dist/curves/bezier-curves.js +54 -0
  105. package/dist/curves/bezier-curves.js.map +1 -0
  106. package/dist/curves/catmull-rom-curve.d.ts +15 -0
  107. package/dist/curves/catmull-rom-curve.d.ts.map +1 -0
  108. package/dist/curves/catmull-rom-curve.js +77 -0
  109. package/dist/curves/catmull-rom-curve.js.map +1 -0
  110. package/dist/curves/curve-arc-length.d.ts +17 -0
  111. package/dist/curves/curve-arc-length.d.ts.map +1 -0
  112. package/dist/curves/curve-arc-length.js +58 -0
  113. package/dist/curves/curve-arc-length.js.map +1 -0
  114. package/dist/curves/curve.d.ts +23 -0
  115. package/dist/curves/curve.d.ts.map +1 -0
  116. package/dist/curves/curve.js +77 -0
  117. package/dist/curves/curve.js.map +1 -0
  118. package/dist/curves/hermite-curve.d.ts +9 -0
  119. package/dist/curves/hermite-curve.d.ts.map +1 -0
  120. package/dist/curves/hermite-curve.js +24 -0
  121. package/dist/curves/hermite-curve.js.map +1 -0
  122. package/dist/curves/index.cjs +293 -0
  123. package/dist/curves/index.cjs.map +6 -0
  124. package/dist/curves/index.d.ts +8 -0
  125. package/dist/curves/index.d.ts.map +1 -0
  126. package/dist/curves/index.js +9 -0
  127. package/dist/curves/index.js.map +1 -0
  128. package/dist/geometries/box-geometry.js +1 -1
  129. package/dist/geometries/box-geometry.js.map +1 -1
  130. package/dist/geometries/capsule-geometry.js +1 -1
  131. package/dist/geometries/capsule-geometry.js.map +1 -1
  132. package/dist/geometries/cylinder-geometry.js +1 -1
  133. package/dist/geometries/cylinder-geometry.js.map +1 -1
  134. package/dist/geometries/geometry-helpers.js +1 -1
  135. package/dist/geometries/geometry-helpers.js.map +1 -1
  136. package/dist/geometries/ico-sphere-geometry.js +1 -1
  137. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  138. package/dist/geometries/plane-geometry.js +1 -1
  139. package/dist/geometries/plane-geometry.js.map +1 -1
  140. package/dist/geometries/primitive-mesh-builder.d.ts +24 -0
  141. package/dist/geometries/primitive-mesh-builder.d.ts.map +1 -0
  142. package/dist/geometries/primitive-mesh-builder.js +74 -0
  143. package/dist/geometries/primitive-mesh-builder.js.map +1 -0
  144. package/dist/geometries/prism-geometry.d.ts +13 -0
  145. package/dist/geometries/prism-geometry.d.ts.map +1 -0
  146. package/dist/geometries/prism-geometry.js +34 -0
  147. package/dist/geometries/prism-geometry.js.map +1 -0
  148. package/dist/geometries/ring-geometry.d.ts +15 -0
  149. package/dist/geometries/ring-geometry.d.ts.map +1 -0
  150. package/dist/geometries/ring-geometry.js +64 -0
  151. package/dist/geometries/ring-geometry.js.map +1 -0
  152. package/dist/geometries/sphere-geometry.js +1 -1
  153. package/dist/geometries/sphere-geometry.js.map +1 -1
  154. package/dist/geometries/surface-of-revolution.js +1 -1
  155. package/dist/geometries/surface-of-revolution.js.map +1 -1
  156. package/dist/geometries/truncated-cone-geometry.js +1 -1
  157. package/dist/geometries/truncated-cone-geometry.js.map +1 -1
  158. package/dist/index.cjs +290 -9
  159. package/dist/index.cjs.map +3 -3
  160. package/dist/index.d.ts +6 -0
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +4 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/lib/geometry-utils.js +1 -1
  165. package/dist/lib/geometry-utils.js.map +1 -1
  166. package/dist/lib/geometry.d.ts +1 -1
  167. package/dist/lib/geometry.d.ts.map +1 -1
  168. package/dist/lib/geometry.js +1 -1
  169. package/dist/lib/geometry.js.map +1 -1
  170. package/dist/lib/hinge-tree.d.ts +33 -0
  171. package/dist/lib/hinge-tree.d.ts.map +1 -0
  172. package/dist/lib/hinge-tree.js +144 -0
  173. package/dist/lib/hinge-tree.js.map +1 -0
  174. package/dist/parametric/lathe-geometry.d.ts +14 -0
  175. package/dist/parametric/lathe-geometry.d.ts.map +1 -0
  176. package/dist/parametric/lathe-geometry.js +48 -0
  177. package/dist/parametric/lathe-geometry.js.map +1 -0
  178. package/dist/parametric/parametric-geometry.d.ts +20 -0
  179. package/dist/parametric/parametric-geometry.d.ts.map +1 -0
  180. package/dist/parametric/parametric-geometry.js +88 -0
  181. package/dist/parametric/parametric-geometry.js.map +1 -0
  182. package/dist/parametric/torus-geometry.d.ts +19 -0
  183. package/dist/parametric/torus-geometry.d.ts.map +1 -0
  184. package/dist/parametric/torus-geometry.js +89 -0
  185. package/dist/parametric/torus-geometry.js.map +1 -0
  186. package/dist/parametric.cjs +328 -0
  187. package/dist/parametric.cjs.map +6 -0
  188. package/dist/parametric.d.ts +7 -0
  189. package/dist/parametric.d.ts.map +1 -0
  190. package/dist/parametric.js +7 -0
  191. package/dist/parametric.js.map +1 -0
  192. package/dist/polygon/cut-by-grid.d.ts +24 -0
  193. package/dist/polygon/cut-by-grid.d.ts.map +1 -0
  194. package/dist/polygon/cut-by-grid.js +221 -0
  195. package/dist/polygon/cut-by-grid.js.map +1 -0
  196. package/dist/polygon/cut-by-mercator-bounds.d.ts +17 -0
  197. package/dist/polygon/cut-by-mercator-bounds.d.ts.map +1 -0
  198. package/dist/polygon/cut-by-mercator-bounds.js +149 -0
  199. package/dist/polygon/cut-by-mercator-bounds.js.map +1 -0
  200. package/dist/polygon/earcut.d.ts +13 -0
  201. package/dist/polygon/earcut.d.ts.map +1 -0
  202. package/dist/polygon/earcut.js +627 -0
  203. package/dist/polygon/earcut.js.map +1 -0
  204. package/dist/polygon/index.cjs +1437 -0
  205. package/dist/polygon/index.cjs.map +6 -0
  206. package/dist/polygon/index.d.ts +12 -0
  207. package/dist/polygon/index.d.ts.map +1 -0
  208. package/dist/polygon/index.js +12 -0
  209. package/dist/polygon/index.js.map +1 -0
  210. package/dist/polygon/lineclip.d.ts +31 -0
  211. package/dist/polygon/lineclip.d.ts.map +1 -0
  212. package/dist/polygon/lineclip.js +184 -0
  213. package/dist/polygon/lineclip.js.map +1 -0
  214. package/dist/polygon/polygon-utils.d.ts +103 -0
  215. package/dist/polygon/polygon-utils.d.ts.map +1 -0
  216. package/dist/polygon/polygon-utils.js +155 -0
  217. package/dist/polygon/polygon-utils.js.map +1 -0
  218. package/dist/polygon/polygon.d.ts +41 -0
  219. package/dist/polygon/polygon.d.ts.map +1 -0
  220. package/dist/polygon/polygon.js +76 -0
  221. package/dist/polygon/polygon.js.map +1 -0
  222. package/dist/polygon/subdivide-polyline.d.ts +56 -0
  223. package/dist/polygon/subdivide-polyline.d.ts.map +1 -0
  224. package/dist/polygon/subdivide-polyline.js +141 -0
  225. package/dist/polygon/subdivide-polyline.js.map +1 -0
  226. package/dist/polygon/subdivide-triangle-mesh.d.ts +68 -0
  227. package/dist/polygon/subdivide-triangle-mesh.d.ts.map +1 -0
  228. package/dist/polygon/subdivide-triangle-mesh.js +228 -0
  229. package/dist/polygon/subdivide-triangle-mesh.js.map +1 -0
  230. package/dist/polygon/utils.d.ts +5 -0
  231. package/dist/polygon/utils.d.ts.map +1 -0
  232. package/dist/polygon/utils.js +38 -0
  233. package/dist/polygon/utils.js.map +1 -0
  234. package/dist/spatial-index/box-index.cjs +328 -0
  235. package/dist/spatial-index/box-index.cjs.map +6 -0
  236. package/dist/spatial-index/box-index.d.ts +65 -0
  237. package/dist/spatial-index/box-index.d.ts.map +1 -0
  238. package/dist/spatial-index/box-index.js +263 -0
  239. package/dist/spatial-index/box-index.js.map +1 -0
  240. package/dist/spatial-index/index.cjs +494 -0
  241. package/dist/spatial-index/index.cjs.map +6 -0
  242. package/dist/spatial-index/index.d.ts +5 -0
  243. package/dist/spatial-index/index.d.ts.map +1 -0
  244. package/dist/spatial-index/index.js +6 -0
  245. package/dist/spatial-index/index.js.map +1 -0
  246. package/dist/spatial-index/triangle-bvh.d.ts +53 -0
  247. package/dist/spatial-index/triangle-bvh.d.ts.map +1 -0
  248. package/dist/spatial-index/triangle-bvh.js +102 -0
  249. package/dist/spatial-index/triangle-bvh.js.map +1 -0
  250. package/dist/utils/attribute-compression.d.ts +50 -0
  251. package/dist/utils/attribute-compression.d.ts.map +1 -0
  252. package/dist/utils/attribute-compression.js +186 -0
  253. package/dist/utils/attribute-compression.js.map +1 -0
  254. package/dist/utils/attribute-iterator.d.ts +8 -0
  255. package/dist/utils/attribute-iterator.d.ts.map +1 -0
  256. package/dist/utils/attribute-iterator.js +25 -0
  257. package/dist/utils/attribute-iterator.js.map +1 -0
  258. package/dist/utils/compute-vertex-normals.d.ts +4 -0
  259. package/dist/utils/compute-vertex-normals.d.ts.map +1 -0
  260. package/dist/utils/compute-vertex-normals.js +54 -0
  261. package/dist/utils/compute-vertex-normals.js.map +1 -0
  262. package/dist/utils/constants.d.ts +52 -0
  263. package/dist/utils/constants.d.ts.map +1 -0
  264. package/dist/utils/constants.js +39 -0
  265. package/dist/utils/constants.js.map +1 -0
  266. package/dist/utils/coordinates.d.ts +3 -0
  267. package/dist/utils/coordinates.d.ts.map +1 -0
  268. package/dist/utils/coordinates.js +8 -0
  269. package/dist/utils/coordinates.js.map +1 -0
  270. package/dist/utils/geometry.d.ts +20 -0
  271. package/dist/utils/geometry.d.ts.map +1 -0
  272. package/dist/utils/geometry.js +31 -0
  273. package/dist/utils/geometry.js.map +1 -0
  274. package/dist/utils/gl-type.d.ts +17 -0
  275. package/dist/utils/gl-type.d.ts.map +1 -0
  276. package/dist/utils/gl-type.js +69 -0
  277. package/dist/utils/gl-type.js.map +1 -0
  278. package/dist/utils/index.cjs +965 -0
  279. package/dist/utils/index.cjs.map +6 -0
  280. package/dist/utils/index.d.ts +18 -0
  281. package/dist/utils/index.d.ts.map +1 -0
  282. package/dist/utils/index.js +16 -0
  283. package/dist/utils/index.js.map +1 -0
  284. package/dist/utils/interpolate-packed-attributes.cjs +176 -0
  285. package/dist/utils/interpolate-packed-attributes.cjs.map +6 -0
  286. package/dist/utils/interpolate-packed-attributes.d.ts +43 -0
  287. package/dist/utils/interpolate-packed-attributes.d.ts.map +1 -0
  288. package/dist/utils/interpolate-packed-attributes.js +192 -0
  289. package/dist/utils/interpolate-packed-attributes.js.map +1 -0
  290. package/dist/utils/mesh-processing.d.ts +18 -0
  291. package/dist/utils/mesh-processing.d.ts.map +1 -0
  292. package/dist/utils/mesh-processing.js +300 -0
  293. package/dist/utils/mesh-processing.js.map +1 -0
  294. package/dist/utils/primitive-iterator.d.ts +21 -0
  295. package/dist/utils/primitive-iterator.d.ts.map +1 -0
  296. package/dist/utils/primitive-iterator.js +117 -0
  297. package/dist/utils/primitive-iterator.js.map +1 -0
  298. package/dist/utils/rgb565.d.ts +5 -0
  299. package/dist/utils/rgb565.d.ts.map +1 -0
  300. package/dist/utils/rgb565.js +24 -0
  301. package/dist/utils/rgb565.js.map +1 -0
  302. package/dist/utils/typed-array-utils.d.ts +3 -0
  303. package/dist/utils/typed-array-utils.d.ts.map +1 -0
  304. package/dist/utils/typed-array-utils.js +16 -0
  305. package/dist/utils/typed-array-utils.js.map +1 -0
  306. package/package.json +57 -4
  307. package/src/culling/constants.ts +6 -0
  308. package/src/culling/index.ts +45 -0
  309. package/src/culling/lib/algorithms/bounding-box-from-points.ts +174 -0
  310. package/src/culling/lib/algorithms/bounding-sphere-from-points.ts +175 -0
  311. package/src/culling/lib/algorithms/compute-eigen-decomposition.ts +171 -0
  312. package/src/culling/lib/algorithms/oriented-bounding-box-quaternion.ts +32 -0
  313. package/src/culling/lib/bounding-volumes/axis-aligned-bounding-box.ts +153 -0
  314. package/src/culling/lib/bounding-volumes/bounding-sphere.ts +154 -0
  315. package/src/culling/lib/bounding-volumes/bounding-volume.ts +38 -0
  316. package/src/culling/lib/bounding-volumes/oriented-bounding-box.ts +320 -0
  317. package/src/culling/lib/culling-volume.ts +163 -0
  318. package/src/culling/lib/perspective-frustum.ts +288 -0
  319. package/src/culling/lib/perspective-off-center-frustum.ts +381 -0
  320. package/src/culling/lib/plane.ts +118 -0
  321. package/src/culling/lib/ray.ts +33 -0
  322. package/src/culling/lib/shapes/box-shape.ts +78 -0
  323. package/src/culling/lib/shapes/capsule-shape.ts +232 -0
  324. package/src/culling/lib/shapes/cylinder-shape.ts +133 -0
  325. package/src/culling/lib/shapes/implicit-shape.ts +209 -0
  326. package/src/culling/lib/shapes/plane-shape.ts +78 -0
  327. package/src/culling/lib/shapes/sphere-shape.ts +60 -0
  328. package/src/culling/oriented-box-2d.ts +165 -0
  329. package/src/culling/queries.ts +155 -0
  330. package/src/curves/bezier-curves.ts +62 -0
  331. package/src/curves/catmull-rom-curve.ts +89 -0
  332. package/src/curves/curve-arc-length.ts +70 -0
  333. package/src/curves/curve.ts +96 -0
  334. package/src/curves/hermite-curve.ts +34 -0
  335. package/src/curves/index.ts +15 -0
  336. package/src/geometries/box-geometry.ts +1 -1
  337. package/src/geometries/capsule-geometry.ts +1 -1
  338. package/src/geometries/cylinder-geometry.ts +1 -1
  339. package/src/geometries/geometry-helpers.ts +1 -1
  340. package/src/geometries/ico-sphere-geometry.ts +1 -1
  341. package/src/geometries/plane-geometry.ts +1 -1
  342. package/src/geometries/primitive-mesh-builder.ts +84 -0
  343. package/src/geometries/prism-geometry.ts +57 -0
  344. package/src/geometries/ring-geometry.ts +102 -0
  345. package/src/geometries/sphere-geometry.ts +1 -1
  346. package/src/geometries/surface-of-revolution.ts +1 -1
  347. package/src/geometries/truncated-cone-geometry.ts +1 -1
  348. package/src/index.ts +10 -1
  349. package/src/lib/geometry-utils.ts +2 -2
  350. package/src/lib/geometry.ts +2 -2
  351. package/src/lib/hinge-tree.ts +170 -0
  352. package/src/parametric/lathe-geometry.ts +70 -0
  353. package/src/parametric/parametric-geometry.ts +118 -0
  354. package/src/parametric/torus-geometry.ts +118 -0
  355. package/src/parametric.ts +9 -0
  356. package/src/polygon/cut-by-grid.ts +313 -0
  357. package/src/polygon/cut-by-mercator-bounds.ts +204 -0
  358. package/src/polygon/earcut.ts +798 -0
  359. package/src/polygon/index.ts +35 -0
  360. package/src/polygon/lineclip.ts +218 -0
  361. package/src/polygon/polygon-utils.ts +273 -0
  362. package/src/polygon/polygon.ts +105 -0
  363. package/src/polygon/subdivide-polyline.ts +223 -0
  364. package/src/polygon/subdivide-triangle-mesh.ts +322 -0
  365. package/src/polygon/utils.ts +50 -0
  366. package/src/spatial-index/box-index.ts +343 -0
  367. package/src/spatial-index/index.ts +18 -0
  368. package/src/spatial-index/triangle-bvh.ts +162 -0
  369. package/src/utils/attribute-compression.ts +234 -0
  370. package/src/utils/attribute-iterator.ts +28 -0
  371. package/src/utils/compute-vertex-normals.ts +63 -0
  372. package/src/utils/constants.ts +42 -0
  373. package/src/utils/coordinates.ts +8 -0
  374. package/src/utils/geometry.ts +49 -0
  375. package/src/utils/gl-type.ts +87 -0
  376. package/src/utils/index.ts +55 -0
  377. package/src/utils/interpolate-packed-attributes.ts +284 -0
  378. package/src/utils/mesh-processing.ts +377 -0
  379. package/src/utils/primitive-iterator.ts +145 -0
  380. package/src/utils/rgb565.ts +26 -0
  381. package/src/utils/typed-array-utils.ts +16 -0
@@ -0,0 +1,170 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+
5
+ import {Matrix4} from '@math.gl/core';
6
+ import type {NumericArray} from '@math.gl/core';
7
+
8
+ /** A rigid panel attached to its parent by a revolute joint. */
9
+ export type HingePanel = {
10
+ /** Parent index in the input array; -1 for a root. Input order is arbitrary. */
11
+ parent: number;
12
+ /** Child-local to parent-local transform at zero angle; defaults to identity. */
13
+ restTransform?: Readonly<NumericArray>;
14
+ /** Hinge pivot in parent-local coordinates. Required for nonroots. */
15
+ pivot?: readonly [number, number, number];
16
+ /** Right-handed rotation axis in parent-local coordinates; normalized internally. */
17
+ axis?: readonly [number, number, number];
18
+ };
19
+
20
+ type Joint = {
21
+ parent: number;
22
+ rest: Matrix4;
23
+ pivot: number[];
24
+ negativePivot: number[];
25
+ axis: number[];
26
+ };
27
+
28
+ /** Experimental rigid-panel kinematics, independent of mesh topology and rendering.
29
+ * Snapshots its inputs. Does not infer shared edges, solve closed loops or detect collisions.
30
+ */
31
+ export class HingeTree {
32
+ readonly panelCount: number;
33
+ private readonly joints: Joint[];
34
+ private readonly order: number[];
35
+ private readonly angles: Float64Array;
36
+ private readonly local = new Matrix4();
37
+ private readonly world = new Matrix4();
38
+ private readonly root = new Matrix4();
39
+
40
+ constructor(panels: readonly HingePanel[]) {
41
+ this.panelCount = panels.length;
42
+ const children: number[][] = panels.map(() => []);
43
+ const order: number[] = [];
44
+ this.joints = panels.map((panel, index) => {
45
+ const {parent} = panel;
46
+ if (!Number.isInteger(parent) || parent < -1 || parent >= panels.length || parent === index) {
47
+ throw new RangeError('Invalid hinge parent index');
48
+ }
49
+ if (parent === -1) order.push(index);
50
+ else children[parent].push(index);
51
+ const rest = new Matrix4();
52
+ if (panel.restTransform !== undefined) {
53
+ validateRigidTransform(panel.restTransform);
54
+ rest.copy(panel.restTransform);
55
+ }
56
+ const pivot = parent === -1 ? [0, 0, 0] : copyVector(panel.pivot);
57
+ const axis = parent === -1 ? [1, 0, 0] : copyVector(panel.axis);
58
+ const length = Math.hypot(...axis);
59
+ if (!Number.isFinite(length) || length === 0) throw new RangeError('Invalid hinge axis');
60
+ for (let i = 0; i < 3; i++) axis[i] /= length;
61
+ return {
62
+ parent,
63
+ rest,
64
+ pivot,
65
+ negativePivot: pivot.map(value => -value),
66
+ axis
67
+ };
68
+ });
69
+ // Iterative traversal supports deep trees without consuming the call stack.
70
+ for (let i = 0; i < order.length; i++) {
71
+ for (const child of children[order[i]]) order.push(child);
72
+ }
73
+ if (order.length !== panels.length) throw new RangeError('Hinge parents contain a cycle');
74
+ this.order = order;
75
+ this.angles = new Float64Array(panels.length);
76
+ }
77
+
78
+ /** Evaluate one angle per panel in radians (root angles must be zero).
79
+ * Returns column-major matrices in input-panel order, 16 doubles per panel.
80
+ * rootTransform places the whole forest; omitted means identity.
81
+ * Output may alias the inputs: angles and root transform are snapshotted first.
82
+ * Finite inputs that overflow during composition throw; output may then be partial.
83
+ */
84
+ evaluate(
85
+ angles: Readonly<NumericArray>,
86
+ output = new Float64Array(this.panelCount * 16),
87
+ rootTransform?: Readonly<NumericArray>
88
+ ): Float64Array {
89
+ if (angles.length !== this.panelCount) throw new RangeError('Expected one angle per panel');
90
+ if (!(output instanceof Float64Array) || output.length !== this.panelCount * 16) {
91
+ throw new RangeError('Expected 16 Float64 values per panel');
92
+ }
93
+ for (let i = 0; i < angles.length; i++) {
94
+ if (!Number.isFinite(angles[i]) || (this.joints[i].parent === -1 && angles[i] !== 0)) {
95
+ throw new RangeError('Expected finite angles and zero root angles');
96
+ }
97
+ this.angles[i] = angles[i];
98
+ }
99
+ this.root.identity();
100
+ if (rootTransform !== undefined) {
101
+ validateRigidTransform(rootTransform);
102
+ this.root.copy(rootTransform);
103
+ }
104
+ for (const index of this.order) {
105
+ const joint = this.joints[index];
106
+ this.local.identity();
107
+ if (joint.parent !== -1) {
108
+ this.local
109
+ .translate(joint.pivot)
110
+ .rotateAxis(this.angles[index], joint.axis)
111
+ .translate(joint.negativePivot);
112
+ }
113
+ this.local.multiplyRight(joint.rest);
114
+ if (joint.parent === -1) this.world.copy(this.root);
115
+ else {
116
+ for (let i = 0; i < 16; i++) this.world[i] = output[joint.parent * 16 + i];
117
+ }
118
+ this.world.multiplyRight(this.local);
119
+ for (let i = 0; i < 16; i++) {
120
+ if (!Number.isFinite(this.world[i])) throw new RangeError('Hinge transform overflow');
121
+ output[index * 16 + i] = this.world[i];
122
+ }
123
+ }
124
+ return output;
125
+ }
126
+ }
127
+
128
+ function copyVector(vector?: readonly number[]): number[] {
129
+ if (
130
+ !vector ||
131
+ vector.length !== 3 ||
132
+ !Number.isFinite(vector[0]) ||
133
+ !Number.isFinite(vector[1]) ||
134
+ !Number.isFinite(vector[2])
135
+ ) {
136
+ throw new RangeError('Expected a finite hinge pivot and axis');
137
+ }
138
+ return [...vector];
139
+ }
140
+
141
+ /** Accept proper rigid affine transforms, allowing numerical roundoff. */
142
+ function validateRigidTransform(matrix: Readonly<NumericArray>): void {
143
+ if (matrix.length !== 16) throw new RangeError('Expected a 4x4 rigid transform');
144
+ for (let i = 0; i < 16; i++) {
145
+ if (!Number.isFinite(matrix[i])) throw new RangeError('Expected a finite rigid transform');
146
+ }
147
+ const tolerance = 1e-6;
148
+ if (
149
+ Math.abs(matrix[3]) > tolerance ||
150
+ Math.abs(matrix[7]) > tolerance ||
151
+ Math.abs(matrix[11]) > tolerance ||
152
+ Math.abs(matrix[15] - 1) > tolerance
153
+ )
154
+ throw new RangeError('Expected an affine rigid transform');
155
+ for (let a = 0; a < 3; a++) {
156
+ for (let b = a; b < 3; b++) {
157
+ let dot = 0;
158
+ for (let row = 0; row < 3; row++) dot += matrix[a * 4 + row] * matrix[b * 4 + row];
159
+ if (Math.abs(dot - (a === b ? 1 : 0)) > tolerance) {
160
+ throw new RangeError('Rigid transforms cannot scale or shear');
161
+ }
162
+ }
163
+ }
164
+ const determinant =
165
+ matrix[0] * (matrix[5] * matrix[10] - matrix[6] * matrix[9]) -
166
+ matrix[4] * (matrix[1] * matrix[10] - matrix[2] * matrix[9]) +
167
+ matrix[8] * (matrix[1] * matrix[6] - matrix[2] * matrix[5]);
168
+ if (Math.abs(determinant - 1) > tolerance)
169
+ throw new RangeError('Rigid transforms cannot reflect');
170
+ }
@@ -0,0 +1,70 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ import type {PrimitiveGeometryProps} from '../geometries/geometry-helpers';
5
+ import {ParametricGeometry, normalized} from './parametric-geometry';
6
+ export type LatheGeometryProps = PrimitiveGeometryProps & {
7
+ /** Ordered [radius, height] profile, with nonnegative radii. */
8
+ points: readonly (readonly [number, number])[];
9
+ segments?: number;
10
+ phiStart?: number;
11
+ phiLength?: number;
12
+ };
13
+ /** Revolves a piecewise-linear profile around Y; smooth profile normals, no end caps. */
14
+ export class LatheGeometry extends ParametricGeometry {
15
+ constructor(props: LatheGeometryProps) {
16
+ const {points, segments = 48, phiStart = 0, phiLength = Math.PI * 2} = props;
17
+ if (
18
+ !points ||
19
+ points.length < 2 ||
20
+ points.some(p => p.length !== 2 || !p.every(Number.isFinite) || p[0] < 0)
21
+ )
22
+ throw new RangeError('Lathe needs at least two finite [nonnegative radius, height] points');
23
+ if (
24
+ !Number.isFinite(phiStart) ||
25
+ !Number.isFinite(phiLength) ||
26
+ phiLength <= 0 ||
27
+ phiLength > Math.PI * 2
28
+ )
29
+ throw new RangeError('Invalid lathe angular sweep');
30
+ if (segments < 3) throw new RangeError('Lathe requires at least three angular segments');
31
+ const profile = points.map(p => [...p]);
32
+ const edgeNormals = profile.slice(1).map((p, i) => {
33
+ const dr = p[0] - profile[i][0],
34
+ dy = p[1] - profile[i][1];
35
+ if (dr === 0 && dy === 0) throw new RangeError('Consecutive profile points must differ');
36
+ return normalized([dy, -dr, 0]);
37
+ });
38
+ const profileNormals = profile.map((_, i) => {
39
+ const before = edgeNormals[Math.max(0, i - 1)],
40
+ after = edgeNormals[Math.min(i, edgeNormals.length - 1)];
41
+ return normalized(before.map((value, axis) => value + after[axis]));
42
+ });
43
+ const section = (v: number) => {
44
+ const coordinate = v * (profile.length - 1),
45
+ i = Math.min(profile.length - 2, Math.floor(coordinate));
46
+ return {i, t: coordinate - i};
47
+ };
48
+ super({
49
+ ...props,
50
+ uSegments: segments,
51
+ vSegments: profile.length - 1,
52
+ periodicU: phiLength === Math.PI * 2,
53
+ sample: (u, v) => {
54
+ const {i, t} = section(v),
55
+ radius = profile[i][0] * (1 - t) + profile[i + 1][0] * t,
56
+ height = profile[i][1] * (1 - t) + profile[i + 1][1] * t,
57
+ theta = phiStart + u * phiLength;
58
+ return [radius * Math.cos(theta), height, -radius * Math.sin(theta)];
59
+ },
60
+ normal: (u, v) => {
61
+ const {i, t} = section(v),
62
+ n = profileNormals[i].map(
63
+ (value, axis) => value * (1 - t) + profileNormals[i + 1][axis] * t
64
+ ),
65
+ theta = phiStart + u * phiLength;
66
+ return [n[0] * Math.cos(theta), n[1], -n[0] * Math.sin(theta)];
67
+ }
68
+ });
69
+ }
70
+ }
@@ -0,0 +1,118 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ import {Geometry} from '../lib/geometry';
5
+ import {assertSegments, type PrimitiveGeometryProps} from '../geometries/geometry-helpers';
6
+
7
+ export type SurfaceSampler = (u: number, v: number) => Readonly<ArrayLike<number>>;
8
+ export type ParametricGeometryProps = PrimitiveGeometryProps & {
9
+ /** Samples the normalized [0,1]² parameter domain. */
10
+ sample: SurfaceSampler;
11
+ /** Optional analytic normals; otherwise estimated from neighboring samples. */
12
+ normal?: SurfaceSampler;
13
+ uSegments?: number;
14
+ vSegments?: number;
15
+ /** Closed axes duplicate their first position/normal at UV 1. */
16
+ periodicU?: boolean;
17
+ periodicV?: boolean;
18
+ };
19
+
20
+ /** Indexed surface grid. Front faces and normals follow ∂P/∂u × ∂P/∂v. */
21
+ export class ParametricGeometry extends Geometry {
22
+ constructor(props: ParametricGeometryProps) {
23
+ const {
24
+ sample,
25
+ normal,
26
+ uSegments = 32,
27
+ vSegments = 32,
28
+ periodicU = false,
29
+ periodicV = false
30
+ } = props;
31
+ assertSegments(uSegments, 'uSegments');
32
+ assertSegments(vSegments, 'vSegments');
33
+ const count = (uSegments + 1) * (vSegments + 1);
34
+ const indexCount = uSegments * vSegments * 6;
35
+ if (!Number.isSafeInteger(indexCount) || indexCount > 0xffffffff)
36
+ throw new RangeError('Surface exceeds 32-bit index-buffer length');
37
+ if (!Number.isSafeInteger(count) || count > 0xffffffff)
38
+ throw new RangeError('Surface exceeds 32-bit indexing');
39
+ const positions = new Float32Array(count * 3),
40
+ normals = new Float32Array(count * 3),
41
+ uvs = new Float32Array(count * 2);
42
+ const canonical = (value: number, periodic: boolean) =>
43
+ periodic ? ((value % 1) + 1) % 1 : Math.max(0, Math.min(1, value));
44
+ const evaluate = (u: number, v: number) =>
45
+ readVector(sample(canonical(u, periodicU), canonical(v, periodicV)));
46
+ // A small finite-difference step estimates smooth-surface normals independently
47
+ // of tessellation density. Open boundaries use one-sided differences.
48
+ const step = 1e-5;
49
+ let row = 0;
50
+ for (let j = 0; j <= vSegments; j++)
51
+ for (let i = 0; i <= uSegments; i++, row++) {
52
+ const u = i / uSegments,
53
+ v = j / vSegments;
54
+ const sampleU = canonical(u, periodicU),
55
+ sampleV = canonical(v, periodicV);
56
+ positions.set(evaluate(sampleU, sampleV), row * 3);
57
+ let n: number[];
58
+ if (normal) n = readVector(normal(sampleU, sampleV));
59
+ else {
60
+ const left = evaluate(sampleU - step, sampleV),
61
+ right = evaluate(sampleU + step, sampleV);
62
+ const below = evaluate(sampleU, sampleV - step),
63
+ above = evaluate(sampleU, sampleV + step);
64
+ const du = normalized(right.map((value, axis) => value - left[axis]));
65
+ const dv = normalized(above.map((value, axis) => value - below[axis]));
66
+ n = [
67
+ du[1] * dv[2] - du[2] * dv[1],
68
+ du[2] * dv[0] - du[0] * dv[2],
69
+ du[0] * dv[1] - du[1] * dv[0]
70
+ ];
71
+ }
72
+ normals.set(normalized(n), row * 3);
73
+ uvs.set([u, v], row * 2);
74
+ }
75
+ for (const value of positions)
76
+ if (!Number.isFinite(value))
77
+ throw new RangeError('Positions must be representable as Float32');
78
+ const indices = count > 0xffff ? new Uint32Array(indexCount) : new Uint16Array(indexCount);
79
+ const stride = uSegments + 1;
80
+ let cursor = 0;
81
+ for (let j = 0; j < vSegments; j++)
82
+ for (let i = 0; i < uSegments; i++) {
83
+ const a = j * stride + i,
84
+ b = a + 1,
85
+ c = a + stride,
86
+ d = c + 1;
87
+ indices[cursor++] = a;
88
+ indices[cursor++] = b;
89
+ indices[cursor++] = d;
90
+ indices[cursor++] = a;
91
+ indices[cursor++] = d;
92
+ indices[cursor++] = c;
93
+ }
94
+ super({
95
+ id: props.id,
96
+ topology: 'triangle-list',
97
+ indices,
98
+ attributes: {
99
+ POSITION: {size: 3, value: positions},
100
+ NORMAL: {size: 3, value: normals},
101
+ TEXCOORD_0: {size: 2, value: uvs},
102
+ ...props.attributes
103
+ }
104
+ });
105
+ }
106
+ }
107
+ function readVector(value: Readonly<ArrayLike<number>>): number[] {
108
+ if (!value || value.length !== 3 || !Array.from(value).every(Number.isFinite))
109
+ throw new RangeError('Surface samples and normals must be finite triples');
110
+ return Array.from(value);
111
+ }
112
+ export function normalized(vector: number[]): number[] {
113
+ const scale = Math.max(...vector.map(Math.abs));
114
+ if (!scale) return [0, 0, 0];
115
+ const scaled = vector.map(value => value / scale),
116
+ length = Math.hypot(...scaled);
117
+ return scaled.map(value => (value === 0 ? 0 : value / length));
118
+ }
@@ -0,0 +1,118 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ import {Geometry} from '../lib/geometry';
5
+ import {
6
+ assertPositive,
7
+ assertSegments,
8
+ makeIndices,
9
+ type PrimitiveGeometryProps
10
+ } from '../geometries/geometry-helpers';
11
+ import {ParametricGeometry} from './parametric-geometry';
12
+ export type TorusGeometryProps = PrimitiveGeometryProps & {
13
+ majorRadius?: number;
14
+ minorRadius?: number;
15
+ majorSegments?: number;
16
+ minorSegments?: number;
17
+ /** Sweep in radians, (0, 2π]. Partial sweeps have open ends unless cap is enabled. */
18
+ arc?: number;
19
+ /** Rotation in radians about Y; positive angles turn toward negative Z. */
20
+ startAngle?: number;
21
+ /** Close partial sweeps with flat end disks. Ignored for a full revolution. */
22
+ cap?: boolean;
23
+ };
24
+ /** Ring torus around Y, with outward analytic normals and separate UV seam rows. */
25
+ export class TorusGeometry extends ParametricGeometry {
26
+ constructor(props: TorusGeometryProps = {}) {
27
+ const {
28
+ majorRadius = 1,
29
+ minorRadius = 0.3,
30
+ majorSegments = 48,
31
+ minorSegments = 24,
32
+ arc = Math.PI * 2,
33
+ startAngle = 0,
34
+ cap = false
35
+ } = props;
36
+ assertPositive(majorRadius, 'majorRadius');
37
+ assertPositive(minorRadius, 'minorRadius');
38
+ if (minorRadius >= majorRadius)
39
+ throw new RangeError('Ring torus requires minorRadius < majorRadius');
40
+ if (!Number.isFinite(arc) || arc <= 0 || arc > Math.PI * 2)
41
+ throw new RangeError('arc must be in (0, 2π]');
42
+ assertSegments(majorSegments, 'majorSegments', 3);
43
+ assertSegments(minorSegments, 'minorSegments', 3);
44
+ if (!Number.isFinite(startAngle)) throw new RangeError('startAngle must be finite');
45
+ const hasCaps = cap && arc < Math.PI * 2;
46
+ super({
47
+ ...props,
48
+ attributes: hasCaps ? undefined : props.attributes,
49
+ uSegments: majorSegments,
50
+ vSegments: minorSegments,
51
+ periodicU: arc === Math.PI * 2,
52
+ periodicV: true,
53
+ sample: (u, v) => {
54
+ const theta = startAngle + u * arc,
55
+ phi = v * Math.PI * 2,
56
+ radius = majorRadius + minorRadius * Math.cos(phi);
57
+ return [radius * Math.cos(theta), minorRadius * Math.sin(phi), -radius * Math.sin(theta)];
58
+ },
59
+ normal: (u, v) => [
60
+ Math.cos(v * Math.PI * 2) * Math.cos(startAngle + u * arc),
61
+ Math.sin(v * Math.PI * 2),
62
+ -Math.cos(v * Math.PI * 2) * Math.sin(startAngle + u * arc)
63
+ ]
64
+ });
65
+ if (hasCaps) {
66
+ const surfacePositions = this.attributes['POSITION'].value;
67
+ const positions = Array.from(surfacePositions);
68
+ const normals = Array.from(this.attributes['NORMAL'].value);
69
+ const textureCoordinates = Array.from(this.attributes['TEXCOORD_0'].value);
70
+ const indices = Array.from(this.indices!.value);
71
+ for (const [angle, direction] of [
72
+ [startAngle, -1],
73
+ [startAngle + arc, 1]
74
+ ]) {
75
+ const normal = [-Math.sin(angle) * direction, 0, -Math.cos(angle) * direction];
76
+ const centerIndex = positions.length / 3;
77
+ positions.push(majorRadius * Math.cos(angle), 0, -majorRadius * Math.sin(angle));
78
+ normals.push(...normal);
79
+ textureCoordinates.push(0.5, 0.5);
80
+ for (let minorSegment = 0; minorSegment <= minorSegments; minorSegment++) {
81
+ // The final disk vertex duplicates the first exactly, matching the tube UV seam.
82
+ const tubeAngle = ((minorSegment % minorSegments) * Math.PI * 2) / minorSegments;
83
+ // Copy boundary positions so disk and tube edges match bit for bit.
84
+ const boundaryOffset =
85
+ (minorSegment * (majorSegments + 1) + (direction < 0 ? 0 : majorSegments)) * 3;
86
+ positions.push(...surfacePositions.slice(boundaryOffset, boundaryOffset + 3));
87
+ normals.push(...normal);
88
+ textureCoordinates.push((Math.cos(tubeAngle) + 1) / 2, (Math.sin(tubeAngle) + 1) / 2);
89
+ if (minorSegment < minorSegments) {
90
+ const firstIndex = centerIndex + minorSegment + 1;
91
+ const secondIndex = firstIndex + 1;
92
+ indices.push(
93
+ centerIndex,
94
+ ...(direction > 0 ? [secondIndex, firstIndex] : [firstIndex, secondIndex])
95
+ );
96
+ }
97
+ }
98
+ }
99
+ const cappedGeometry = new Geometry({
100
+ id: this.id,
101
+ topology: this.topology,
102
+ indices: makeIndices(positions.length / 3, indices),
103
+ attributes: {
104
+ POSITION: {size: 3, value: new Float32Array(positions)},
105
+ NORMAL: {size: 3, value: new Float32Array(normals)},
106
+ TEXCOORD_0: {size: 2, value: new Float32Array(textureCoordinates)},
107
+ ...props.attributes
108
+ }
109
+ });
110
+ // Finish construction with validated cap data while retaining ParametricGeometry inheritance.
111
+ Object.assign(this, {
112
+ attributes: cappedGeometry.attributes,
113
+ indices: cappedGeometry.indices,
114
+ vertexCount: cappedGeometry.vertexCount
115
+ });
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,9 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ export {ParametricGeometry} from './parametric/parametric-geometry';
5
+ export type {ParametricGeometryProps, SurfaceSampler} from './parametric/parametric-geometry';
6
+ export {TorusGeometry} from './parametric/torus-geometry';
7
+ export type {TorusGeometryProps} from './parametric/torus-geometry';
8
+ export {LatheGeometry} from './parametric/lathe-geometry';
9
+ export type {LatheGeometryProps} from './parametric/lathe-geometry';