@math.gl/geometry 5.0.0-alpha.17 → 5.0.0-alpha.19

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 (294) hide show
  1. package/README.md +7 -1
  2. package/dist/culling/constants.d.ts +3 -0
  3. package/dist/culling/constants.d.ts.map +1 -0
  4. package/dist/culling/constants.js +5 -0
  5. package/dist/culling/constants.js.map +1 -0
  6. package/dist/culling/index.cjs +2022 -0
  7. package/dist/culling/index.cjs.map +6 -0
  8. package/dist/culling/index.d.ts +28 -0
  9. package/dist/culling/index.d.ts.map +1 -0
  10. package/dist/culling/index.js +22 -0
  11. package/dist/culling/index.js.map +1 -0
  12. package/dist/culling/lib/algorithms/bounding-box-from-points.d.ts +15 -0
  13. package/dist/culling/lib/algorithms/bounding-box-from-points.d.ts.map +1 -0
  14. package/dist/culling/lib/algorithms/bounding-box-from-points.js +137 -0
  15. package/dist/culling/lib/algorithms/bounding-box-from-points.js.map +1 -0
  16. package/dist/culling/lib/algorithms/bounding-sphere-from-points.d.ts +14 -0
  17. package/dist/culling/lib/algorithms/bounding-sphere-from-points.d.ts.map +1 -0
  18. package/dist/culling/lib/algorithms/bounding-sphere-from-points.js +146 -0
  19. package/dist/culling/lib/algorithms/bounding-sphere-from-points.js.map +1 -0
  20. package/dist/culling/lib/algorithms/compute-eigen-decomposition.d.ts +37 -0
  21. package/dist/culling/lib/algorithms/compute-eigen-decomposition.d.ts.map +1 -0
  22. package/dist/culling/lib/algorithms/compute-eigen-decomposition.js +137 -0
  23. package/dist/culling/lib/algorithms/compute-eigen-decomposition.js.map +1 -0
  24. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.d.ts +56 -0
  25. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.d.ts.map +1 -0
  26. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.js +116 -0
  27. package/dist/culling/lib/bounding-volumes/axis-aligned-bounding-box.js.map +1 -0
  28. package/dist/culling/lib/bounding-volumes/bounding-sphere.d.ts +40 -0
  29. package/dist/culling/lib/bounding-volumes/bounding-sphere.d.ts.map +1 -0
  30. package/dist/culling/lib/bounding-volumes/bounding-sphere.js +123 -0
  31. package/dist/culling/lib/bounding-volumes/bounding-sphere.js.map +1 -0
  32. package/dist/culling/lib/bounding-volumes/bounding-volume.d.ts +30 -0
  33. package/dist/culling/lib/bounding-volumes/bounding-volume.d.ts.map +1 -0
  34. package/dist/culling/lib/bounding-volumes/bounding-volume.js +7 -0
  35. package/dist/culling/lib/bounding-volumes/bounding-volume.js.map +1 -0
  36. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.d.ts +68 -0
  37. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.d.ts.map +1 -0
  38. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.js +259 -0
  39. package/dist/culling/lib/bounding-volumes/oriented-bounding-box.js.map +1 -0
  40. package/dist/culling/lib/culling-volume.d.ts +46 -0
  41. package/dist/culling/lib/culling-volume.d.ts.map +1 -0
  42. package/dist/culling/lib/culling-volume.js +126 -0
  43. package/dist/culling/lib/culling-volume.js.map +1 -0
  44. package/dist/culling/lib/perspective-frustum.d.ts +153 -0
  45. package/dist/culling/lib/perspective-frustum.d.ts.map +1 -0
  46. package/dist/culling/lib/perspective-frustum.js +191 -0
  47. package/dist/culling/lib/perspective-frustum.js.map +1 -0
  48. package/dist/culling/lib/perspective-off-center-frustum.d.ts +158 -0
  49. package/dist/culling/lib/perspective-off-center-frustum.d.ts.map +1 -0
  50. package/dist/culling/lib/perspective-off-center-frustum.js +276 -0
  51. package/dist/culling/lib/perspective-off-center-frustum.js.map +1 -0
  52. package/dist/culling/lib/plane.d.ts +35 -0
  53. package/dist/culling/lib/plane.d.ts.map +1 -0
  54. package/dist/culling/lib/plane.js +90 -0
  55. package/dist/culling/lib/plane.js.map +1 -0
  56. package/dist/culling/lib/ray.d.ts +13 -0
  57. package/dist/culling/lib/ray.d.ts.map +1 -0
  58. package/dist/culling/lib/ray.js +30 -0
  59. package/dist/culling/lib/ray.js.map +1 -0
  60. package/dist/culling/lib/shapes/box-shape.d.ts +19 -0
  61. package/dist/culling/lib/shapes/box-shape.d.ts.map +1 -0
  62. package/dist/culling/lib/shapes/box-shape.js +69 -0
  63. package/dist/culling/lib/shapes/box-shape.js.map +1 -0
  64. package/dist/culling/lib/shapes/capsule-shape.d.ts +23 -0
  65. package/dist/culling/lib/shapes/capsule-shape.d.ts.map +1 -0
  66. package/dist/culling/lib/shapes/capsule-shape.js +151 -0
  67. package/dist/culling/lib/shapes/capsule-shape.js.map +1 -0
  68. package/dist/culling/lib/shapes/cylinder-shape.d.ts +22 -0
  69. package/dist/culling/lib/shapes/cylinder-shape.d.ts.map +1 -0
  70. package/dist/culling/lib/shapes/cylinder-shape.js +99 -0
  71. package/dist/culling/lib/shapes/cylinder-shape.js.map +1 -0
  72. package/dist/culling/lib/shapes/implicit-shape.d.ts +56 -0
  73. package/dist/culling/lib/shapes/implicit-shape.d.ts.map +1 -0
  74. package/dist/culling/lib/shapes/implicit-shape.js +142 -0
  75. package/dist/culling/lib/shapes/implicit-shape.js.map +1 -0
  76. package/dist/culling/lib/shapes/plane-shape.d.ts +27 -0
  77. package/dist/culling/lib/shapes/plane-shape.d.ts.map +1 -0
  78. package/dist/culling/lib/shapes/plane-shape.js +71 -0
  79. package/dist/culling/lib/shapes/plane-shape.js.map +1 -0
  80. package/dist/culling/lib/shapes/sphere-shape.d.ts +18 -0
  81. package/dist/culling/lib/shapes/sphere-shape.d.ts.map +1 -0
  82. package/dist/culling/lib/shapes/sphere-shape.js +43 -0
  83. package/dist/culling/lib/shapes/sphere-shape.js.map +1 -0
  84. package/dist/culling/oriented-box-2d.cjs +73 -0
  85. package/dist/culling/oriented-box-2d.cjs.map +6 -0
  86. package/dist/culling/oriented-box-2d.d.ts +22 -0
  87. package/dist/culling/oriented-box-2d.d.ts.map +1 -0
  88. package/dist/culling/oriented-box-2d.js +86 -0
  89. package/dist/culling/oriented-box-2d.js.map +1 -0
  90. package/dist/culling/queries.cjs +161 -0
  91. package/dist/culling/queries.cjs.map +6 -0
  92. package/dist/culling/queries.d.ts +20 -0
  93. package/dist/culling/queries.d.ts.map +1 -0
  94. package/dist/culling/queries.js +139 -0
  95. package/dist/culling/queries.js.map +1 -0
  96. package/dist/curves/bezier-curves.d.ts +18 -0
  97. package/dist/curves/bezier-curves.d.ts.map +1 -0
  98. package/dist/curves/bezier-curves.js +54 -0
  99. package/dist/curves/bezier-curves.js.map +1 -0
  100. package/dist/curves/catmull-rom-curve.d.ts +15 -0
  101. package/dist/curves/catmull-rom-curve.d.ts.map +1 -0
  102. package/dist/curves/catmull-rom-curve.js +77 -0
  103. package/dist/curves/catmull-rom-curve.js.map +1 -0
  104. package/dist/curves/curve-arc-length.d.ts +17 -0
  105. package/dist/curves/curve-arc-length.d.ts.map +1 -0
  106. package/dist/curves/curve-arc-length.js +58 -0
  107. package/dist/curves/curve-arc-length.js.map +1 -0
  108. package/dist/curves/curve.d.ts +23 -0
  109. package/dist/curves/curve.d.ts.map +1 -0
  110. package/dist/curves/curve.js +77 -0
  111. package/dist/curves/curve.js.map +1 -0
  112. package/dist/curves/hermite-curve.d.ts +9 -0
  113. package/dist/curves/hermite-curve.d.ts.map +1 -0
  114. package/dist/curves/hermite-curve.js +24 -0
  115. package/dist/curves/hermite-curve.js.map +1 -0
  116. package/dist/curves/index.cjs +293 -0
  117. package/dist/curves/index.cjs.map +6 -0
  118. package/dist/curves/index.d.ts +8 -0
  119. package/dist/curves/index.d.ts.map +1 -0
  120. package/dist/curves/index.js +9 -0
  121. package/dist/curves/index.js.map +1 -0
  122. package/dist/lib/geometry.d.ts +1 -1
  123. package/dist/lib/geometry.d.ts.map +1 -1
  124. package/dist/polygon/cut-by-grid.d.ts +24 -0
  125. package/dist/polygon/cut-by-grid.d.ts.map +1 -0
  126. package/dist/polygon/cut-by-grid.js +221 -0
  127. package/dist/polygon/cut-by-grid.js.map +1 -0
  128. package/dist/polygon/cut-by-mercator-bounds.d.ts +17 -0
  129. package/dist/polygon/cut-by-mercator-bounds.d.ts.map +1 -0
  130. package/dist/polygon/cut-by-mercator-bounds.js +149 -0
  131. package/dist/polygon/cut-by-mercator-bounds.js.map +1 -0
  132. package/dist/polygon/earcut.d.ts +13 -0
  133. package/dist/polygon/earcut.d.ts.map +1 -0
  134. package/dist/polygon/earcut.js +627 -0
  135. package/dist/polygon/earcut.js.map +1 -0
  136. package/dist/polygon/index.cjs +1414 -0
  137. package/dist/polygon/index.cjs.map +6 -0
  138. package/dist/polygon/index.d.ts +12 -0
  139. package/dist/polygon/index.d.ts.map +1 -0
  140. package/dist/polygon/index.js +12 -0
  141. package/dist/polygon/index.js.map +1 -0
  142. package/dist/polygon/lineclip.d.ts +31 -0
  143. package/dist/polygon/lineclip.d.ts.map +1 -0
  144. package/dist/polygon/lineclip.js +184 -0
  145. package/dist/polygon/lineclip.js.map +1 -0
  146. package/dist/polygon/polygon-utils.d.ts +103 -0
  147. package/dist/polygon/polygon-utils.d.ts.map +1 -0
  148. package/dist/polygon/polygon-utils.js +155 -0
  149. package/dist/polygon/polygon-utils.js.map +1 -0
  150. package/dist/polygon/polygon.d.ts +41 -0
  151. package/dist/polygon/polygon.d.ts.map +1 -0
  152. package/dist/polygon/polygon.js +76 -0
  153. package/dist/polygon/polygon.js.map +1 -0
  154. package/dist/polygon/subdivide-polyline.d.ts +42 -0
  155. package/dist/polygon/subdivide-polyline.d.ts.map +1 -0
  156. package/dist/polygon/subdivide-polyline.js +109 -0
  157. package/dist/polygon/subdivide-polyline.js.map +1 -0
  158. package/dist/polygon/subdivide-triangle-mesh.d.ts +68 -0
  159. package/dist/polygon/subdivide-triangle-mesh.d.ts.map +1 -0
  160. package/dist/polygon/subdivide-triangle-mesh.js +228 -0
  161. package/dist/polygon/subdivide-triangle-mesh.js.map +1 -0
  162. package/dist/polygon/utils.d.ts +5 -0
  163. package/dist/polygon/utils.d.ts.map +1 -0
  164. package/dist/polygon/utils.js +38 -0
  165. package/dist/polygon/utils.js.map +1 -0
  166. package/dist/spatial-index/box-index.cjs +328 -0
  167. package/dist/spatial-index/box-index.cjs.map +6 -0
  168. package/dist/spatial-index/box-index.d.ts +65 -0
  169. package/dist/spatial-index/box-index.d.ts.map +1 -0
  170. package/dist/spatial-index/box-index.js +263 -0
  171. package/dist/spatial-index/box-index.js.map +1 -0
  172. package/dist/spatial-index/index.cjs +494 -0
  173. package/dist/spatial-index/index.cjs.map +6 -0
  174. package/dist/spatial-index/index.d.ts +5 -0
  175. package/dist/spatial-index/index.d.ts.map +1 -0
  176. package/dist/spatial-index/index.js +6 -0
  177. package/dist/spatial-index/index.js.map +1 -0
  178. package/dist/spatial-index/triangle-bvh.d.ts +53 -0
  179. package/dist/spatial-index/triangle-bvh.d.ts.map +1 -0
  180. package/dist/spatial-index/triangle-bvh.js +102 -0
  181. package/dist/spatial-index/triangle-bvh.js.map +1 -0
  182. package/dist/utils/attribute-compression.d.ts +50 -0
  183. package/dist/utils/attribute-compression.d.ts.map +1 -0
  184. package/dist/utils/attribute-compression.js +186 -0
  185. package/dist/utils/attribute-compression.js.map +1 -0
  186. package/dist/utils/attribute-iterator.d.ts +8 -0
  187. package/dist/utils/attribute-iterator.d.ts.map +1 -0
  188. package/dist/utils/attribute-iterator.js +25 -0
  189. package/dist/utils/attribute-iterator.js.map +1 -0
  190. package/dist/utils/compute-vertex-normals.d.ts +4 -0
  191. package/dist/utils/compute-vertex-normals.d.ts.map +1 -0
  192. package/dist/utils/compute-vertex-normals.js +54 -0
  193. package/dist/utils/compute-vertex-normals.js.map +1 -0
  194. package/dist/utils/constants.d.ts +52 -0
  195. package/dist/utils/constants.d.ts.map +1 -0
  196. package/dist/utils/constants.js +39 -0
  197. package/dist/utils/constants.js.map +1 -0
  198. package/dist/utils/coordinates.d.ts +3 -0
  199. package/dist/utils/coordinates.d.ts.map +1 -0
  200. package/dist/utils/coordinates.js +8 -0
  201. package/dist/utils/coordinates.js.map +1 -0
  202. package/dist/utils/geometry.d.ts +20 -0
  203. package/dist/utils/geometry.d.ts.map +1 -0
  204. package/dist/utils/geometry.js +31 -0
  205. package/dist/utils/geometry.js.map +1 -0
  206. package/dist/utils/gl-type.d.ts +17 -0
  207. package/dist/utils/gl-type.d.ts.map +1 -0
  208. package/dist/utils/gl-type.js +69 -0
  209. package/dist/utils/gl-type.js.map +1 -0
  210. package/dist/utils/index.cjs +965 -0
  211. package/dist/utils/index.cjs.map +6 -0
  212. package/dist/utils/index.d.ts +18 -0
  213. package/dist/utils/index.d.ts.map +1 -0
  214. package/dist/utils/index.js +16 -0
  215. package/dist/utils/index.js.map +1 -0
  216. package/dist/utils/interpolate-packed-attributes.cjs +176 -0
  217. package/dist/utils/interpolate-packed-attributes.cjs.map +6 -0
  218. package/dist/utils/interpolate-packed-attributes.d.ts +43 -0
  219. package/dist/utils/interpolate-packed-attributes.d.ts.map +1 -0
  220. package/dist/utils/interpolate-packed-attributes.js +192 -0
  221. package/dist/utils/interpolate-packed-attributes.js.map +1 -0
  222. package/dist/utils/mesh-processing.d.ts +18 -0
  223. package/dist/utils/mesh-processing.d.ts.map +1 -0
  224. package/dist/utils/mesh-processing.js +300 -0
  225. package/dist/utils/mesh-processing.js.map +1 -0
  226. package/dist/utils/primitive-iterator.d.ts +21 -0
  227. package/dist/utils/primitive-iterator.d.ts.map +1 -0
  228. package/dist/utils/primitive-iterator.js +117 -0
  229. package/dist/utils/primitive-iterator.js.map +1 -0
  230. package/dist/utils/rgb565.d.ts +5 -0
  231. package/dist/utils/rgb565.d.ts.map +1 -0
  232. package/dist/utils/rgb565.js +24 -0
  233. package/dist/utils/rgb565.js.map +1 -0
  234. package/dist/utils/typed-array-utils.d.ts +3 -0
  235. package/dist/utils/typed-array-utils.d.ts.map +1 -0
  236. package/dist/utils/typed-array-utils.js +16 -0
  237. package/dist/utils/typed-array-utils.js.map +1 -0
  238. package/package.json +49 -3
  239. package/src/culling/constants.ts +6 -0
  240. package/src/culling/index.ts +40 -0
  241. package/src/culling/lib/algorithms/bounding-box-from-points.ts +174 -0
  242. package/src/culling/lib/algorithms/bounding-sphere-from-points.ts +175 -0
  243. package/src/culling/lib/algorithms/compute-eigen-decomposition.ts +171 -0
  244. package/src/culling/lib/bounding-volumes/axis-aligned-bounding-box.ts +153 -0
  245. package/src/culling/lib/bounding-volumes/bounding-sphere.ts +154 -0
  246. package/src/culling/lib/bounding-volumes/bounding-volume.ts +38 -0
  247. package/src/culling/lib/bounding-volumes/oriented-bounding-box.ts +355 -0
  248. package/src/culling/lib/culling-volume.ts +163 -0
  249. package/src/culling/lib/perspective-frustum.ts +288 -0
  250. package/src/culling/lib/perspective-off-center-frustum.ts +381 -0
  251. package/src/culling/lib/plane.ts +118 -0
  252. package/src/culling/lib/ray.ts +33 -0
  253. package/src/culling/lib/shapes/box-shape.ts +78 -0
  254. package/src/culling/lib/shapes/capsule-shape.ts +232 -0
  255. package/src/culling/lib/shapes/cylinder-shape.ts +133 -0
  256. package/src/culling/lib/shapes/implicit-shape.ts +209 -0
  257. package/src/culling/lib/shapes/plane-shape.ts +78 -0
  258. package/src/culling/lib/shapes/sphere-shape.ts +60 -0
  259. package/src/culling/oriented-box-2d.ts +165 -0
  260. package/src/culling/queries.ts +155 -0
  261. package/src/curves/bezier-curves.ts +62 -0
  262. package/src/curves/catmull-rom-curve.ts +89 -0
  263. package/src/curves/curve-arc-length.ts +70 -0
  264. package/src/curves/curve.ts +96 -0
  265. package/src/curves/hermite-curve.ts +34 -0
  266. package/src/curves/index.ts +15 -0
  267. package/src/lib/geometry-utils.ts +1 -1
  268. package/src/lib/geometry.ts +1 -1
  269. package/src/polygon/cut-by-grid.ts +313 -0
  270. package/src/polygon/cut-by-mercator-bounds.ts +204 -0
  271. package/src/polygon/earcut.ts +798 -0
  272. package/src/polygon/index.ts +31 -0
  273. package/src/polygon/lineclip.ts +218 -0
  274. package/src/polygon/polygon-utils.ts +273 -0
  275. package/src/polygon/polygon.ts +105 -0
  276. package/src/polygon/subdivide-polyline.ts +160 -0
  277. package/src/polygon/subdivide-triangle-mesh.ts +322 -0
  278. package/src/polygon/utils.ts +50 -0
  279. package/src/spatial-index/box-index.ts +343 -0
  280. package/src/spatial-index/index.ts +18 -0
  281. package/src/spatial-index/triangle-bvh.ts +162 -0
  282. package/src/utils/attribute-compression.ts +234 -0
  283. package/src/utils/attribute-iterator.ts +28 -0
  284. package/src/utils/compute-vertex-normals.ts +63 -0
  285. package/src/utils/constants.ts +42 -0
  286. package/src/utils/coordinates.ts +8 -0
  287. package/src/utils/geometry.ts +49 -0
  288. package/src/utils/gl-type.ts +87 -0
  289. package/src/utils/index.ts +55 -0
  290. package/src/utils/interpolate-packed-attributes.ts +284 -0
  291. package/src/utils/mesh-processing.ts +377 -0
  292. package/src/utils/primitive-iterator.ts +145 -0
  293. package/src/utils/rgb565.ts +26 -0
  294. package/src/utils/typed-array-utils.ts +16 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/index.ts", "../../src/utils/constants.ts", "../../src/utils/gl-type.ts", "../../src/utils/geometry.ts", "../../src/utils/attribute-iterator.ts", "../../src/utils/primitive-iterator.ts", "../../src/utils/compute-vertex-normals.ts", "../../src/utils/rgb565.ts", "../../src/utils/typed-array-utils.ts", "../../src/utils/attribute-compression.ts", "../../src/utils/coordinates.ts", "../../src/utils/mesh-processing.ts", "../../src/utils/interpolate-packed-attributes.ts"],
4
+ "mappings": "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",
5
+ "names": ["import_core", "import_core", "i"]
6
+ }
@@ -0,0 +1,18 @@
1
+ export type { TypedArray, TypedArrayConstructor } from '@math.gl/core/types';
2
+ export { GL, GL_TYPE, GL_PRIMITIVE, GL_PRIMITIVE_MODE } from "./constants.js";
3
+ export { default as GLType } from "./gl-type.js";
4
+ export type { Geometry, GeometryAttribute } from "./geometry.js";
5
+ export { isGeometry } from "./geometry.js";
6
+ export type { Primitive } from "./primitive-iterator.js";
7
+ export { makeAttributeIterator } from "./attribute-iterator.js";
8
+ export { makePrimitiveIterator } from "./primitive-iterator.js";
9
+ export { computeVertexNormals } from "./compute-vertex-normals.js";
10
+ export { encodeRGB565, decodeRGB565 } from "./rgb565.js";
11
+ export { concatTypedArrays } from "./typed-array-utils.js";
12
+ export { octEncodeInRange, octEncode, octEncodeToVector4, octDecodeInRange, octDecode, octDecodeFromVector4, octPackFloat, octEncodeFloat, octDecodeFloat, octPack, octUnpack, compressTextureCoordinates, decompressTextureCoordinates, zigZagDeltaDecode } from "./attribute-compression.js";
13
+ export { emod } from "./coordinates.js";
14
+ export { transformGeometry, mergeGeometries, weldGeometry, getDegenerateTriangles } from "./mesh-processing.js";
15
+ export type { WeldGeometryOptions, WeldGeometryResult } from "./mesh-processing.js";
16
+ export { interpolatePackedAttributes } from "./interpolate-packed-attributes.js";
17
+ export type { PackedAttributeType, PackedAttributeInterpolation, PackedAttribute, AttributeInterpolationProvenance, PackedAttributeInterpolationOptions } from "./interpolate-packed-attributes.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAC,uBAAoB;AACzE,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,qBAAkB;AAE5C,YAAY,EAAC,QAAQ,EAAE,iBAAiB,EAAC,sBAAmB;AAC5D,OAAO,EAAC,UAAU,EAAC,sBAAmB;AAEtC,YAAY,EAAC,SAAS,EAAC,gCAA6B;AACpD,OAAO,EAAC,qBAAqB,EAAC,gCAA6B;AAC3D,OAAO,EAAC,qBAAqB,EAAC,gCAA6B;AAC3D,OAAO,EAAC,oBAAoB,EAAC,oCAAiC;AAE9D,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,oBAAiB;AACpD,OAAO,EAAC,iBAAiB,EAAC,+BAA4B;AAEtD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,OAAO,EACP,SAAS,EACT,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EAClB,mCAAgC;AAEjC,OAAO,EAAC,IAAI,EAAC,yBAAsB;AAEnC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,6BAA0B;AAC3B,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,6BAA0B;AAE/E,OAAO,EAAC,2BAA2B,EAAC,2CAAwC;AAC5E,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,eAAe,EACf,gCAAgC,EAChC,mCAAmC,EACpC,2CAAwC"}
@@ -0,0 +1,16 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ export { GL, GL_TYPE, GL_PRIMITIVE, GL_PRIMITIVE_MODE } from "./constants.js";
5
+ export { default as GLType } from "./gl-type.js";
6
+ export { isGeometry } from "./geometry.js";
7
+ export { makeAttributeIterator } from "./attribute-iterator.js";
8
+ export { makePrimitiveIterator } from "./primitive-iterator.js";
9
+ export { computeVertexNormals } from "./compute-vertex-normals.js";
10
+ export { encodeRGB565, decodeRGB565 } from "./rgb565.js";
11
+ export { concatTypedArrays } from "./typed-array-utils.js";
12
+ export { octEncodeInRange, octEncode, octEncodeToVector4, octDecodeInRange, octDecode, octDecodeFromVector4, octPackFloat, octEncodeFloat, octDecodeFloat, octPack, octUnpack, compressTextureCoordinates, decompressTextureCoordinates, zigZagDeltaDecode } from "./attribute-compression.js";
13
+ export { emod } from "./coordinates.js";
14
+ export { transformGeometry, mergeGeometries, weldGeometry, getDegenerateTriangles } from "./mesh-processing.js";
15
+ export { interpolatePackedAttributes } from "./interpolate-packed-attributes.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAI5D,OAAO,EAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAC,uBAAoB;AACzE,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,qBAAkB;AAG5C,OAAO,EAAC,UAAU,EAAC,sBAAmB;AAGtC,OAAO,EAAC,qBAAqB,EAAC,gCAA6B;AAC3D,OAAO,EAAC,qBAAqB,EAAC,gCAA6B;AAC3D,OAAO,EAAC,oBAAoB,EAAC,oCAAiC;AAE9D,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,oBAAiB;AACpD,OAAO,EAAC,iBAAiB,EAAC,+BAA4B;AAEtD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,OAAO,EACP,SAAS,EACT,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EAClB,mCAAgC;AAEjC,OAAO,EAAC,IAAI,EAAC,yBAAsB;AAEnC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,6BAA0B;AAG3B,OAAO,EAAC,2BAA2B,EAAC,2CAAwC"}
@@ -0,0 +1,176 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // dist/utils/interpolate-packed-attributes.js
20
+ var interpolate_packed_attributes_exports = {};
21
+ __export(interpolate_packed_attributes_exports, {
22
+ interpolatePackedAttributes: () => interpolatePackedAttributes
23
+ });
24
+ module.exports = __toCommonJS(interpolate_packed_attributes_exports);
25
+ var BYTE_SIZES = {
26
+ int8: 1,
27
+ uint8: 1,
28
+ int16: 2,
29
+ uint16: 2,
30
+ int32: 4,
31
+ uint32: 4,
32
+ float32: 4,
33
+ float64: 8
34
+ };
35
+ function interpolatePackedAttributes(source, provenance, options) {
36
+ const { byteStride, attributes, littleEndian = true, maxOutputBytes = 64 * 1024 * 1024 } = options;
37
+ const { sourceVertexIndices, sourceVertexWeights } = provenance;
38
+ if (!Number.isSafeInteger(byteStride) || byteStride <= 0 || source.byteLength % byteStride || !Array.isArray(options.attributes) || typeof littleEndian !== "boolean" || !Number.isSafeInteger(maxOutputBytes) || maxOutputBytes < 0 || !Number.isSafeInteger(sourceVertexIndices.length) || sourceVertexIndices.length < 0 || sourceVertexIndices.length % 3 || sourceVertexIndices.length !== sourceVertexWeights.length) {
39
+ throw new RangeError("Invalid packed attribute layout or provenance lengths");
40
+ }
41
+ const outputCount = sourceVertexIndices.length / 3;
42
+ const outputBytes = outputCount * byteStride;
43
+ if (!Number.isSafeInteger(outputBytes) || outputBytes > maxOutputBytes) {
44
+ throw new RangeError("Packed attribute interpolation exceeded maxOutputBytes");
45
+ }
46
+ const ranges = [];
47
+ for (const attribute of attributes) {
48
+ if (!attribute || typeof attribute !== "object" || !Object.prototype.hasOwnProperty.call(BYTE_SIZES, attribute.type) || !Number.isSafeInteger(attribute.size) || attribute.size <= 0 || !Number.isSafeInteger(attribute.byteOffset) || attribute.byteOffset < 0) {
49
+ throw new RangeError("Invalid packed attribute descriptor");
50
+ }
51
+ const end = attribute.byteOffset + attribute.size * BYTE_SIZES[attribute.type];
52
+ if (!Number.isSafeInteger(end) || end > byteStride || ranges.some(([start, previousEnd]) => attribute.byteOffset < previousEnd && end > start)) {
53
+ throw new RangeError("Packed attribute ranges must fit the stride and not overlap");
54
+ }
55
+ ranges.push([attribute.byteOffset, end]);
56
+ if (typeof attribute.interpolation === "string") {
57
+ validateInterpolation(attribute.interpolation);
58
+ } else {
59
+ if (!Array.isArray(attribute.interpolation) || attribute.interpolation.length !== attribute.size) {
60
+ throw new RangeError("Expected one interpolation policy per component");
61
+ }
62
+ for (let component = 0; component < attribute.size; component++) {
63
+ validateInterpolation(attribute.interpolation[component]);
64
+ }
65
+ }
66
+ }
67
+ const sourceCount = source.byteLength / byteStride;
68
+ const input = new DataView(source.buffer, source.byteOffset, source.byteLength);
69
+ const output = new Uint8Array(outputBytes);
70
+ const result = new DataView(output.buffer);
71
+ for (let vertex = 0; vertex < outputCount; vertex++) {
72
+ let sum = 0;
73
+ let firstSource = -1;
74
+ let contributors = 0;
75
+ for (let slot = 0; slot < 3; slot++) {
76
+ const weight = sourceVertexWeights[vertex * 3 + slot];
77
+ const index = sourceVertexIndices[vertex * 3 + slot];
78
+ if (!Number.isFinite(weight) || weight < 0 || weight > 1 || weight > 0 && (!Number.isSafeInteger(index) || index < 0 || index >= sourceCount)) {
79
+ throw new RangeError("Invalid contributing source index or interpolation weight");
80
+ }
81
+ if (weight > 0) {
82
+ contributors++;
83
+ if (firstSource < 0)
84
+ firstSource = index;
85
+ }
86
+ sum += weight;
87
+ }
88
+ if (firstSource < 0 || Math.abs(sum - 1) > 1e-10) {
89
+ throw new RangeError("Interpolation weights must sum to one");
90
+ }
91
+ output.set(source.subarray(firstSource * byteStride, (firstSource + 1) * byteStride), vertex * byteStride);
92
+ for (const attribute of attributes) {
93
+ for (let component = 0; component < attribute.size; component++) {
94
+ const offset = attribute.byteOffset + component * BYTE_SIZES[attribute.type];
95
+ const policy = typeof attribute.interpolation === "string" ? attribute.interpolation : attribute.interpolation[component];
96
+ const firstValue = readComponent(input, firstSource * byteStride + offset, attribute.type, littleEndian);
97
+ let value = 0;
98
+ for (let slot = 0; slot < 3; slot++) {
99
+ const weight = sourceVertexWeights[vertex * 3 + slot];
100
+ if (weight === 0)
101
+ continue;
102
+ const sourceValue = readComponent(input, sourceVertexIndices[vertex * 3 + slot] * byteStride + offset, attribute.type, littleEndian);
103
+ if (!Number.isFinite(sourceValue))
104
+ throw new RangeError("Packed attributes must be finite");
105
+ if (policy === "flat" && sourceValue !== firstValue) {
106
+ throw new RangeError("Flat attribute contributors must agree");
107
+ }
108
+ value += sourceValue * weight;
109
+ }
110
+ if (policy === "linear") {
111
+ if (!Number.isFinite(value))
112
+ throw new RangeError("Interpolated attributes must be finite");
113
+ if (contributors !== 1 || sum !== 1) {
114
+ writeComponent(result, vertex * byteStride + offset, attribute.type, value, littleEndian);
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ return output;
121
+ }
122
+ function validateInterpolation(interpolation) {
123
+ if (interpolation !== "linear" && interpolation !== "flat") {
124
+ throw new RangeError("Expected linear or flat interpolation");
125
+ }
126
+ }
127
+ function readComponent(view, offset, type, littleEndian) {
128
+ switch (type) {
129
+ case "int8":
130
+ return view.getInt8(offset);
131
+ case "uint8":
132
+ return view.getUint8(offset);
133
+ case "int16":
134
+ return view.getInt16(offset, littleEndian);
135
+ case "uint16":
136
+ return view.getUint16(offset, littleEndian);
137
+ case "int32":
138
+ return view.getInt32(offset, littleEndian);
139
+ case "uint32":
140
+ return view.getUint32(offset, littleEndian);
141
+ case "float32":
142
+ return view.getFloat32(offset, littleEndian);
143
+ case "float64":
144
+ return view.getFloat64(offset, littleEndian);
145
+ }
146
+ }
147
+ function writeComponent(view, offset, type, value, littleEndian) {
148
+ const integer = Math.round(value);
149
+ switch (type) {
150
+ case "int8":
151
+ view.setInt8(offset, integer);
152
+ break;
153
+ case "uint8":
154
+ view.setUint8(offset, integer);
155
+ break;
156
+ case "int16":
157
+ view.setInt16(offset, integer, littleEndian);
158
+ break;
159
+ case "uint16":
160
+ view.setUint16(offset, integer, littleEndian);
161
+ break;
162
+ case "int32":
163
+ view.setInt32(offset, integer, littleEndian);
164
+ break;
165
+ case "uint32":
166
+ view.setUint32(offset, integer, littleEndian);
167
+ break;
168
+ case "float32":
169
+ view.setFloat32(offset, value, littleEndian);
170
+ break;
171
+ case "float64":
172
+ view.setFloat64(offset, value, littleEndian);
173
+ break;
174
+ }
175
+ }
176
+ //# sourceMappingURL=interpolate-packed-attributes.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/interpolate-packed-attributes.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,43 @@
1
+ /** Scalar storage formats supported by packed attribute interpolation. */
2
+ export type PackedAttributeType = 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'float32' | 'float64';
3
+ /** Interpolate numeric values, or require identical values at every contributing vertex. */
4
+ export type PackedAttributeInterpolation = 'linear' | 'flat';
5
+ /** One explicitly described attribute inside an interleaved vertex record. */
6
+ export type PackedAttribute = {
7
+ /** Scalar storage format; values are interpolated in the encoded domain. */
8
+ type: PackedAttributeType;
9
+ /** Number of scalar components. */
10
+ size: number;
11
+ /** Byte offset within each record; unaligned offsets are supported. */
12
+ byteOffset: number;
13
+ /** Policy for the whole attribute, or one explicit policy per component. */
14
+ interpolation: PackedAttributeInterpolation | readonly PackedAttributeInterpolation[];
15
+ };
16
+ /** Three original source indices and corresponding weights per output vertex. */
17
+ export type AttributeInterpolationProvenance = {
18
+ /** Indices into the original source records, matching polygon subdivision provenance. */
19
+ sourceVertexIndices: ArrayLike<number>;
20
+ /** Nonnegative finite weights summing to one per triplet; zero-weight indices are ignored. */
21
+ sourceVertexWeights: ArrayLike<number>;
22
+ };
23
+ /** Byte layout, interpolation policies and output allocation limit. */
24
+ export type PackedAttributeInterpolationOptions = {
25
+ /** Positive byte length of a source and output vertex record. */
26
+ byteStride: number;
27
+ /** Nonoverlapping attribute ranges. Unlisted bytes are copied from the first contributor. */
28
+ attributes: readonly PackedAttribute[];
29
+ /** Byte order for multibyte components. Default true. */
30
+ littleEndian?: boolean;
31
+ /** Maximum allocated output byte length. Default 64 MiB; zero permits empty output only. */
32
+ maxOutputBytes?: number;
33
+ };
34
+ /** Reconstruct interleaved attributes from subdivision's original-vertex provenance.
35
+ * Inputs are never modified. Linear integer components use Math.round once at final output;
36
+ * this is deliberately not repeated midpoint quantization. Flat components reject differing
37
+ * contributing values instead of guessing categorical semantics. Padding and unlisted bytes
38
+ * come from the first positive-weight contributor. Normals are not renormalized, and normalized
39
+ * GPU formats are not decoded. Duplicate source records at attribute seams before subdivision.
40
+ * @throws RangeError For invalid layout, provenance, nonfinite values or allocation limits.
41
+ */
42
+ export declare function interpolatePackedAttributes(source: Uint8Array, provenance: AttributeInterpolationProvenance, options: PackedAttributeInterpolationOptions): Uint8Array;
43
+ //# sourceMappingURL=interpolate-packed-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate-packed-attributes.d.ts","sourceRoot":"","sources":["../../src/utils/interpolate-packed-attributes.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,4FAA4F;AAC5F,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG;IAC5B,4EAA4E;IAC5E,IAAI,EAAE,mBAAmB,CAAC;IAC1B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,EAAE,4BAA4B,GAAG,SAAS,4BAA4B,EAAE,CAAC;CACvF,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,yFAAyF;IACzF,mBAAmB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,8FAA8F;IAC9F,mBAAmB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,mCAAmC,GAAG;IAChD,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAaF;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,gCAAgC,EAC5C,OAAO,EAAE,mCAAmC,GAC3C,UAAU,CA2IZ"}
@@ -0,0 +1,192 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ const BYTE_SIZES = {
5
+ int8: 1,
6
+ uint8: 1,
7
+ int16: 2,
8
+ uint16: 2,
9
+ int32: 4,
10
+ uint32: 4,
11
+ float32: 4,
12
+ float64: 8
13
+ };
14
+ /** Reconstruct interleaved attributes from subdivision's original-vertex provenance.
15
+ * Inputs are never modified. Linear integer components use Math.round once at final output;
16
+ * this is deliberately not repeated midpoint quantization. Flat components reject differing
17
+ * contributing values instead of guessing categorical semantics. Padding and unlisted bytes
18
+ * come from the first positive-weight contributor. Normals are not renormalized, and normalized
19
+ * GPU formats are not decoded. Duplicate source records at attribute seams before subdivision.
20
+ * @throws RangeError For invalid layout, provenance, nonfinite values or allocation limits.
21
+ */
22
+ export function interpolatePackedAttributes(source, provenance, options) {
23
+ const { byteStride, attributes, littleEndian = true, maxOutputBytes = 64 * 1024 * 1024 } = options;
24
+ const { sourceVertexIndices, sourceVertexWeights } = provenance;
25
+ if (!Number.isSafeInteger(byteStride) ||
26
+ byteStride <= 0 ||
27
+ source.byteLength % byteStride ||
28
+ !Array.isArray(options.attributes) ||
29
+ typeof littleEndian !== 'boolean' ||
30
+ !Number.isSafeInteger(maxOutputBytes) ||
31
+ maxOutputBytes < 0 ||
32
+ !Number.isSafeInteger(sourceVertexIndices.length) ||
33
+ sourceVertexIndices.length < 0 ||
34
+ sourceVertexIndices.length % 3 ||
35
+ sourceVertexIndices.length !== sourceVertexWeights.length) {
36
+ throw new RangeError('Invalid packed attribute layout or provenance lengths');
37
+ }
38
+ const outputCount = sourceVertexIndices.length / 3;
39
+ const outputBytes = outputCount * byteStride;
40
+ if (!Number.isSafeInteger(outputBytes) || outputBytes > maxOutputBytes) {
41
+ throw new RangeError('Packed attribute interpolation exceeded maxOutputBytes');
42
+ }
43
+ const ranges = [];
44
+ for (const attribute of attributes) {
45
+ if (!attribute ||
46
+ typeof attribute !== 'object' ||
47
+ !Object.prototype.hasOwnProperty.call(BYTE_SIZES, attribute.type) ||
48
+ !Number.isSafeInteger(attribute.size) ||
49
+ attribute.size <= 0 ||
50
+ !Number.isSafeInteger(attribute.byteOffset) ||
51
+ attribute.byteOffset < 0) {
52
+ throw new RangeError('Invalid packed attribute descriptor');
53
+ }
54
+ const end = attribute.byteOffset + attribute.size * BYTE_SIZES[attribute.type];
55
+ if (!Number.isSafeInteger(end) ||
56
+ end > byteStride ||
57
+ ranges.some(([start, previousEnd]) => attribute.byteOffset < previousEnd && end > start)) {
58
+ throw new RangeError('Packed attribute ranges must fit the stride and not overlap');
59
+ }
60
+ ranges.push([attribute.byteOffset, end]);
61
+ if (typeof attribute.interpolation === 'string') {
62
+ validateInterpolation(attribute.interpolation);
63
+ }
64
+ else {
65
+ if (!Array.isArray(attribute.interpolation) ||
66
+ attribute.interpolation.length !== attribute.size) {
67
+ throw new RangeError('Expected one interpolation policy per component');
68
+ }
69
+ for (let component = 0; component < attribute.size; component++) {
70
+ validateInterpolation(attribute.interpolation[component]);
71
+ }
72
+ }
73
+ }
74
+ const sourceCount = source.byteLength / byteStride;
75
+ const input = new DataView(source.buffer, source.byteOffset, source.byteLength);
76
+ const output = new Uint8Array(outputBytes);
77
+ const result = new DataView(output.buffer);
78
+ for (let vertex = 0; vertex < outputCount; vertex++) {
79
+ let sum = 0;
80
+ let firstSource = -1;
81
+ let contributors = 0;
82
+ for (let slot = 0; slot < 3; slot++) {
83
+ const weight = sourceVertexWeights[vertex * 3 + slot];
84
+ const index = sourceVertexIndices[vertex * 3 + slot];
85
+ if (!Number.isFinite(weight) ||
86
+ weight < 0 ||
87
+ weight > 1 ||
88
+ (weight > 0 && (!Number.isSafeInteger(index) || index < 0 || index >= sourceCount))) {
89
+ throw new RangeError('Invalid contributing source index or interpolation weight');
90
+ }
91
+ if (weight > 0) {
92
+ contributors++;
93
+ if (firstSource < 0)
94
+ firstSource = index;
95
+ }
96
+ sum += weight;
97
+ }
98
+ if (firstSource < 0 || Math.abs(sum - 1) > 1e-10) {
99
+ throw new RangeError('Interpolation weights must sum to one');
100
+ }
101
+ output.set(source.subarray(firstSource * byteStride, (firstSource + 1) * byteStride), vertex * byteStride);
102
+ for (const attribute of attributes) {
103
+ for (let component = 0; component < attribute.size; component++) {
104
+ const offset = attribute.byteOffset + component * BYTE_SIZES[attribute.type];
105
+ const policy = typeof attribute.interpolation === 'string'
106
+ ? attribute.interpolation
107
+ : attribute.interpolation[component];
108
+ const firstValue = readComponent(input, firstSource * byteStride + offset, attribute.type, littleEndian);
109
+ let value = 0;
110
+ for (let slot = 0; slot < 3; slot++) {
111
+ const weight = sourceVertexWeights[vertex * 3 + slot];
112
+ if (weight === 0)
113
+ continue;
114
+ const sourceValue = readComponent(input, sourceVertexIndices[vertex * 3 + slot] * byteStride + offset, attribute.type, littleEndian);
115
+ if (!Number.isFinite(sourceValue))
116
+ throw new RangeError('Packed attributes must be finite');
117
+ if (policy === 'flat' && sourceValue !== firstValue) {
118
+ throw new RangeError('Flat attribute contributors must agree');
119
+ }
120
+ value += sourceValue * weight;
121
+ }
122
+ if (policy === 'linear') {
123
+ if (!Number.isFinite(value))
124
+ throw new RangeError('Interpolated attributes must be finite');
125
+ // Identity provenance preserves every original encoded bit, including signed zero.
126
+ if (contributors !== 1 || sum !== 1) {
127
+ writeComponent(result, vertex * byteStride + offset, attribute.type, value, littleEndian);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ return output;
134
+ }
135
+ /** Reject implicit or unknown interpolation semantics. */
136
+ function validateInterpolation(interpolation) {
137
+ if (interpolation !== 'linear' && interpolation !== 'flat') {
138
+ throw new RangeError('Expected linear or flat interpolation');
139
+ }
140
+ }
141
+ /** Read an encoded scalar relative to the source view, including its byte offset. */
142
+ function readComponent(view, offset, type, littleEndian) {
143
+ switch (type) {
144
+ case 'int8':
145
+ return view.getInt8(offset);
146
+ case 'uint8':
147
+ return view.getUint8(offset);
148
+ case 'int16':
149
+ return view.getInt16(offset, littleEndian);
150
+ case 'uint16':
151
+ return view.getUint16(offset, littleEndian);
152
+ case 'int32':
153
+ return view.getInt32(offset, littleEndian);
154
+ case 'uint32':
155
+ return view.getUint32(offset, littleEndian);
156
+ case 'float32':
157
+ return view.getFloat32(offset, littleEndian);
158
+ case 'float64':
159
+ return view.getFloat64(offset, littleEndian);
160
+ }
161
+ }
162
+ /** Write one final interpolated scalar, rounding integer encodings consistently. */
163
+ function writeComponent(view, offset, type, value, littleEndian) {
164
+ const integer = Math.round(value);
165
+ switch (type) {
166
+ case 'int8':
167
+ view.setInt8(offset, integer);
168
+ break;
169
+ case 'uint8':
170
+ view.setUint8(offset, integer);
171
+ break;
172
+ case 'int16':
173
+ view.setInt16(offset, integer, littleEndian);
174
+ break;
175
+ case 'uint16':
176
+ view.setUint16(offset, integer, littleEndian);
177
+ break;
178
+ case 'int32':
179
+ view.setInt32(offset, integer, littleEndian);
180
+ break;
181
+ case 'uint32':
182
+ view.setUint32(offset, integer, littleEndian);
183
+ break;
184
+ case 'float32':
185
+ view.setFloat32(offset, value, littleEndian);
186
+ break;
187
+ case 'float64':
188
+ view.setFloat64(offset, value, littleEndian);
189
+ break;
190
+ }
191
+ }
192
+ //# sourceMappingURL=interpolate-packed-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate-packed-attributes.js","sourceRoot":"","sources":["../../src/utils/interpolate-packed-attributes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type Geometry } from "./geometry.js";
2
+ /** Fresh, indexed triangle-list geometry. No input buffers are changed. */
3
+ export declare function transformGeometry(geometry: Geometry, matrix: Readonly<ArrayLike<number>>): Geometry;
4
+ /** Concatenates compatible triangle meshes and offsets vertex indices. */
5
+ export declare function mergeGeometries(geometries: readonly Geometry[]): Geometry;
6
+ export type WeldGeometryOptions = {
7
+ /** Position quantization step; zero means exact matching. */ positionGridSize?: number;
8
+ };
9
+ export type WeldGeometryResult = {
10
+ geometry: Geometry;
11
+ vertexMap: Uint32Array;
12
+ removedVertices: number;
13
+ };
14
+ /** Welds full attribute tuples, preserving UV seams and hard normal edges. */
15
+ export declare function weldGeometry(geometry: Geometry, options?: WeldGeometryOptions): WeldGeometryResult;
16
+ /** Returns triangle numbers with area <= areaEpsilon, in original draw order. */
17
+ export declare function getDegenerateTriangles(geometry: Geometry, areaEpsilon?: number): Uint32Array;
18
+ //# sourceMappingURL=mesh-processing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-processing.d.ts","sourceRoot":"","sources":["../../src/utils/mesh-processing.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,KAAK,QAAQ,EAAyB,sBAAmB;AASrF,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAClC,QAAQ,CAkFV;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,CA8CzE;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,6DAA6D,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACzF,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAmDpB;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,SAAI,GAAG,WAAW,CAoCvF"}