@deck.gl/aggregation-layers 9.4.0-alpha.1 → 9.4.0-beta.1

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 (210) hide show
  1. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.d.ts.map +1 -1
  2. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +1 -3
  3. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js.map +1 -1
  4. package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +0 -1
  5. package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js.map +1 -1
  6. package/dist/dist.dev.js +642 -38
  7. package/dist/grid-layer/grid-cell-layer.d.ts.map +1 -1
  8. package/dist/grid-layer/grid-cell-layer.js +3 -2
  9. package/dist/grid-layer/grid-cell-layer.js.map +1 -1
  10. package/dist/grid-layer/grid-cell-layer.wgsl.d.ts +3 -0
  11. package/dist/grid-layer/grid-cell-layer.wgsl.d.ts.map +1 -0
  12. package/dist/grid-layer/grid-cell-layer.wgsl.js +114 -0
  13. package/dist/grid-layer/grid-cell-layer.wgsl.js.map +1 -0
  14. package/dist/grid-layer/grid-layer-uniforms.d.ts +1 -0
  15. package/dist/grid-layer/grid-layer-uniforms.d.ts.map +1 -1
  16. package/dist/grid-layer/grid-layer-uniforms.js +14 -0
  17. package/dist/grid-layer/grid-layer-uniforms.js.map +1 -1
  18. package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts +2 -0
  19. package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts.map +1 -1
  20. package/dist/heatmap-layer/heatmap-layer-uniforms.js +19 -0
  21. package/dist/heatmap-layer/heatmap-layer-uniforms.js.map +1 -1
  22. package/dist/heatmap-layer/heatmap-layer.d.ts.map +1 -1
  23. package/dist/heatmap-layer/heatmap-layer.js +59 -12
  24. package/dist/heatmap-layer/heatmap-layer.js.map +1 -1
  25. package/dist/heatmap-layer/max.wgsl.d.ts +3 -0
  26. package/dist/heatmap-layer/max.wgsl.d.ts.map +1 -0
  27. package/dist/heatmap-layer/max.wgsl.js +48 -0
  28. package/dist/heatmap-layer/max.wgsl.js.map +1 -0
  29. package/dist/heatmap-layer/triangle-layer-uniforms.d.ts +1 -0
  30. package/dist/heatmap-layer/triangle-layer-uniforms.d.ts.map +1 -1
  31. package/dist/heatmap-layer/triangle-layer-uniforms.js +16 -0
  32. package/dist/heatmap-layer/triangle-layer-uniforms.js.map +1 -1
  33. package/dist/heatmap-layer/triangle-layer.d.ts.map +1 -1
  34. package/dist/heatmap-layer/triangle-layer.js +3 -2
  35. package/dist/heatmap-layer/triangle-layer.js.map +1 -1
  36. package/dist/heatmap-layer/triangle-layer.wgsl.d.ts +3 -0
  37. package/dist/heatmap-layer/triangle-layer.wgsl.d.ts.map +1 -0
  38. package/dist/heatmap-layer/triangle-layer.wgsl.js +65 -0
  39. package/dist/heatmap-layer/triangle-layer.wgsl.js.map +1 -0
  40. package/dist/heatmap-layer/weights.wgsl.d.ts +3 -0
  41. package/dist/heatmap-layer/weights.wgsl.d.ts.map +1 -0
  42. package/dist/heatmap-layer/weights.wgsl.js +64 -0
  43. package/dist/heatmap-layer/weights.wgsl.js.map +1 -0
  44. package/dist/hexagon-layer/hexagon-cell-layer.d.ts.map +1 -1
  45. package/dist/hexagon-layer/hexagon-cell-layer.js +2 -2
  46. package/dist/hexagon-layer/hexagon-cell-layer.js.map +1 -1
  47. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.d.ts +3 -0
  48. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.d.ts.map +1 -0
  49. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.js +120 -0
  50. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.js.map +1 -0
  51. package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts +1 -0
  52. package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts.map +1 -1
  53. package/dist/hexagon-layer/hexagon-layer-uniforms.js +13 -0
  54. package/dist/hexagon-layer/hexagon-layer-uniforms.js.map +1 -1
  55. package/dist/index.cjs +13268 -1488
  56. package/dist/index.cjs.map +3 -4
  57. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts +1 -6
  58. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts.map +1 -1
  59. package/dist/screen-grid-layer/screen-grid-cell-layer.js +3 -2
  60. package/dist/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  61. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.d.ts +3 -0
  62. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.d.ts.map +1 -0
  63. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.js +76 -0
  64. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.js.map +1 -0
  65. package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts +1 -0
  66. package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts.map +1 -1
  67. package/dist/screen-grid-layer/screen-grid-layer-uniforms.js +12 -0
  68. package/dist/screen-grid-layer/screen-grid-layer-uniforms.js.map +1 -1
  69. package/dist.min.js +545 -35
  70. package/dist.webgl-only/common/aggregation-layer.js +68 -0
  71. package/dist.webgl-only/common/aggregation-layer.js.map +1 -0
  72. package/dist.webgl-only/common/aggregator/aggregator.js +5 -0
  73. package/dist.webgl-only/common/aggregator/aggregator.js.map +1 -0
  74. package/dist.webgl-only/common/aggregator/cpu-aggregator/aggregate.js +69 -0
  75. package/dist.webgl-only/common/aggregator/cpu-aggregator/aggregate.js.map +1 -0
  76. package/dist.webgl-only/common/aggregator/cpu-aggregator/cpu-aggregator.js +141 -0
  77. package/dist.webgl-only/common/aggregator/cpu-aggregator/cpu-aggregator.js.map +1 -0
  78. package/dist.webgl-only/common/aggregator/cpu-aggregator/sort-bins.js +44 -0
  79. package/dist.webgl-only/common/aggregator/cpu-aggregator/sort-bins.js.map +1 -0
  80. package/dist.webgl-only/common/aggregator/cpu-aggregator/vertex-accessor.js +56 -0
  81. package/dist.webgl-only/common/aggregator/cpu-aggregator/vertex-accessor.js.map +1 -0
  82. package/dist.webgl-only/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js +22 -0
  83. package/dist.webgl-only/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js.map +1 -0
  84. package/dist.webgl-only/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js +18 -0
  85. package/dist.webgl-only/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js.map +1 -0
  86. package/dist.webgl-only/common/aggregator/gpu-aggregator/utils.js +24 -0
  87. package/dist.webgl-only/common/aggregator/gpu-aggregator/utils.js.map +1 -0
  88. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +222 -0
  89. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js.map +1 -0
  90. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregator.js +203 -0
  91. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregator.js.map +1 -0
  92. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +225 -0
  93. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-bin-sorter.js.map +1 -0
  94. package/dist.webgl-only/common/aggregator/index.js +6 -0
  95. package/dist.webgl-only/common/aggregator/index.js.map +1 -0
  96. package/dist.webgl-only/common/types.js +5 -0
  97. package/dist.webgl-only/common/types.js.map +1 -0
  98. package/dist.webgl-only/common/utils/bounds-utils.js +21 -0
  99. package/dist.webgl-only/common/utils/bounds-utils.js.map +1 -0
  100. package/dist.webgl-only/common/utils/color-utils.js +65 -0
  101. package/dist.webgl-only/common/utils/color-utils.js.map +1 -0
  102. package/dist.webgl-only/common/utils/prop-utils.js +13 -0
  103. package/dist.webgl-only/common/utils/prop-utils.js.map +1 -0
  104. package/dist.webgl-only/common/utils/scale-utils.js +181 -0
  105. package/dist.webgl-only/common/utils/scale-utils.js.map +1 -0
  106. package/dist.webgl-only/contour-layer/bin-options-uniforms.js +18 -0
  107. package/dist.webgl-only/contour-layer/bin-options-uniforms.js.map +1 -0
  108. package/dist.webgl-only/contour-layer/contour-layer.js +282 -0
  109. package/dist.webgl-only/contour-layer/contour-layer.js.map +1 -0
  110. package/dist.webgl-only/contour-layer/contour-utils.js +60 -0
  111. package/dist.webgl-only/contour-layer/contour-utils.js.map +1 -0
  112. package/dist.webgl-only/contour-layer/marching-squares-codes.js +341 -0
  113. package/dist.webgl-only/contour-layer/marching-squares-codes.js.map +1 -0
  114. package/dist.webgl-only/contour-layer/marching-squares.js +151 -0
  115. package/dist.webgl-only/contour-layer/marching-squares.js.map +1 -0
  116. package/dist.webgl-only/contour-layer/value-reader.js +47 -0
  117. package/dist.webgl-only/contour-layer/value-reader.js.map +1 -0
  118. package/dist.webgl-only/grid-layer/bin-options-uniforms.js +18 -0
  119. package/dist.webgl-only/grid-layer/bin-options-uniforms.js.map +1 -0
  120. package/dist.webgl-only/grid-layer/grid-cell-layer-vertex.glsl.js +51 -0
  121. package/dist.webgl-only/grid-layer/grid-cell-layer-vertex.glsl.js.map +1 -0
  122. package/dist.webgl-only/grid-layer/grid-cell-layer.js +95 -0
  123. package/dist.webgl-only/grid-layer/grid-cell-layer.js.map +1 -0
  124. package/dist.webgl-only/grid-layer/grid-cell-layer.wgsl.js +5 -0
  125. package/dist.webgl-only/grid-layer/grid-cell-layer.wgsl.js.map +1 -0
  126. package/dist.webgl-only/grid-layer/grid-layer-uniforms.js +26 -0
  127. package/dist.webgl-only/grid-layer/grid-layer-uniforms.js.map +1 -0
  128. package/dist.webgl-only/grid-layer/grid-layer.js +362 -0
  129. package/dist.webgl-only/grid-layer/grid-layer.js.map +1 -0
  130. package/dist.webgl-only/heatmap-layer/aggregation-layer.js +140 -0
  131. package/dist.webgl-only/heatmap-layer/aggregation-layer.js.map +1 -0
  132. package/dist.webgl-only/heatmap-layer/heatmap-layer-uniforms.js +36 -0
  133. package/dist.webgl-only/heatmap-layer/heatmap-layer-uniforms.js.map +1 -0
  134. package/dist.webgl-only/heatmap-layer/heatmap-layer-utils.js +67 -0
  135. package/dist.webgl-only/heatmap-layer/heatmap-layer-utils.js.map +1 -0
  136. package/dist.webgl-only/heatmap-layer/heatmap-layer.js +513 -0
  137. package/dist.webgl-only/heatmap-layer/heatmap-layer.js.map +1 -0
  138. package/dist.webgl-only/heatmap-layer/max-fs.glsl.js +13 -0
  139. package/dist.webgl-only/heatmap-layer/max-fs.glsl.js.map +1 -0
  140. package/dist.webgl-only/heatmap-layer/max-vs.glsl.js +18 -0
  141. package/dist.webgl-only/heatmap-layer/max-vs.glsl.js.map +1 -0
  142. package/dist.webgl-only/heatmap-layer/max.wgsl.js +5 -0
  143. package/dist.webgl-only/heatmap-layer/max.wgsl.js.map +1 -0
  144. package/dist.webgl-only/heatmap-layer/triangle-layer-fragment.glsl.js +34 -0
  145. package/dist.webgl-only/heatmap-layer/triangle-layer-fragment.glsl.js.map +1 -0
  146. package/dist.webgl-only/heatmap-layer/triangle-layer-uniforms.js +25 -0
  147. package/dist.webgl-only/heatmap-layer/triangle-layer-uniforms.js.map +1 -0
  148. package/dist.webgl-only/heatmap-layer/triangle-layer-vertex.glsl.js +28 -0
  149. package/dist.webgl-only/heatmap-layer/triangle-layer-vertex.glsl.js.map +1 -0
  150. package/dist.webgl-only/heatmap-layer/triangle-layer.js +49 -0
  151. package/dist.webgl-only/heatmap-layer/triangle-layer.js.map +1 -0
  152. package/dist.webgl-only/heatmap-layer/triangle-layer.wgsl.js +5 -0
  153. package/dist.webgl-only/heatmap-layer/triangle-layer.wgsl.js.map +1 -0
  154. package/dist.webgl-only/heatmap-layer/weights-fs.glsl.js +21 -0
  155. package/dist.webgl-only/heatmap-layer/weights-fs.glsl.js.map +1 -0
  156. package/dist.webgl-only/heatmap-layer/weights-vs.glsl.js +21 -0
  157. package/dist.webgl-only/heatmap-layer/weights-vs.glsl.js.map +1 -0
  158. package/dist.webgl-only/heatmap-layer/weights.wgsl.js +5 -0
  159. package/dist.webgl-only/heatmap-layer/weights.wgsl.js.map +1 -0
  160. package/dist.webgl-only/hexagon-layer/bin-options-uniforms.js +18 -0
  161. package/dist.webgl-only/hexagon-layer/bin-options-uniforms.js.map +1 -0
  162. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer-vertex.glsl.js +55 -0
  163. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer-vertex.glsl.js.map +1 -0
  164. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.js +90 -0
  165. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.js.map +1 -0
  166. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.wgsl.js +5 -0
  167. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.wgsl.js.map +1 -0
  168. package/dist.webgl-only/hexagon-layer/hexagon-layer-uniforms.js +24 -0
  169. package/dist.webgl-only/hexagon-layer/hexagon-layer-uniforms.js.map +1 -0
  170. package/dist.webgl-only/hexagon-layer/hexagon-layer.js +360 -0
  171. package/dist.webgl-only/hexagon-layer/hexagon-layer.js.map +1 -0
  172. package/dist.webgl-only/hexagon-layer/hexbin.js +70 -0
  173. package/dist.webgl-only/hexagon-layer/hexbin.js.map +1 -0
  174. package/dist.webgl-only/index.cjs +15625 -0
  175. package/dist.webgl-only/index.cjs.map +6 -0
  176. package/dist.webgl-only/index.js +11 -0
  177. package/dist.webgl-only/index.js.map +1 -0
  178. package/dist.webgl-only/screen-grid-layer/bin-options-uniforms.js +16 -0
  179. package/dist.webgl-only/screen-grid-layer/bin-options-uniforms.js.map +1 -0
  180. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.js +88 -0
  181. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.js.map +1 -0
  182. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.wgsl.js +5 -0
  183. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.wgsl.js.map +1 -0
  184. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-fragment.glsl.js +16 -0
  185. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +1 -0
  186. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-uniforms.js +22 -0
  187. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-uniforms.js.map +1 -0
  188. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-vertex.glsl.js +31 -0
  189. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +1 -0
  190. package/dist.webgl-only/screen-grid-layer/screen-grid-layer.js +194 -0
  191. package/dist.webgl-only/screen-grid-layer/screen-grid-layer.js.map +1 -0
  192. package/package.json +14 -5
  193. package/src/common/aggregator/gpu-aggregator/webgl-aggregation-transform.ts +1 -3
  194. package/src/common/aggregator/gpu-aggregator/webgl-bin-sorter.ts +0 -1
  195. package/src/grid-layer/grid-cell-layer.ts +3 -2
  196. package/src/grid-layer/grid-cell-layer.wgsl.ts +114 -0
  197. package/src/grid-layer/grid-layer-uniforms.ts +15 -0
  198. package/src/heatmap-layer/heatmap-layer-uniforms.ts +20 -0
  199. package/src/heatmap-layer/heatmap-layer.ts +67 -13
  200. package/src/heatmap-layer/max.wgsl.ts +48 -0
  201. package/src/heatmap-layer/triangle-layer-uniforms.ts +17 -0
  202. package/src/heatmap-layer/triangle-layer.ts +3 -2
  203. package/src/heatmap-layer/triangle-layer.wgsl.ts +65 -0
  204. package/src/heatmap-layer/weights.wgsl.ts +64 -0
  205. package/src/hexagon-layer/hexagon-cell-layer.ts +2 -3
  206. package/src/hexagon-layer/hexagon-cell-layer.wgsl.ts +120 -0
  207. package/src/hexagon-layer/hexagon-layer-uniforms.ts +14 -0
  208. package/src/screen-grid-layer/screen-grid-cell-layer.ts +4 -4
  209. package/src/screen-grid-layer/screen-grid-cell-layer.wgsl.ts +76 -0
  210. package/src/screen-grid-layer/screen-grid-layer-uniforms.ts +13 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-layer.js","sourceRoot":"","sources":["../../src/contour-layer/contour-layer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAEL,iBAAiB,EAEjB,SAAS,EAIT,QAAQ,EACR,UAAU,EAGX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAE,aAAa,EAAuB,sCAAmC;AAChG,OAAO,gBAAgB,uCAAoC;AAE3D,OAAO,EAAC,gBAAgB,EAAuC,2BAAwB;AACvF,OAAO,EAAC,wBAAwB,EAAC,0BAAuB;AACxD,OAAO,EAAC,aAAa,EAAC,wCAAqC;AAC3D,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAa,kBAAkB,EAAC,kCAA+B;AAEtE,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,MAAM,YAAY,GAAoC;IACpD,mBAAmB;IACnB,QAAQ,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;IAC/C,UAAU,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;IACzD,WAAW,EAAE,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAC;IAC9D,SAAS,EAAE,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAC;IACvC,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,KAAK;IAElB,gBAAgB;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,CAAC;QACvB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;KACX;IAED,OAAO,EAAE,KAAK;CACf,CAAC;AA6DF,gIAAgI;AAChI,MAAqB,SAAoD,SAAQ,gBAGhF;IAiBC,iBAAiB;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClF,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,aAAa,CAAC;gBACvB,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,QAAQ,EAAE,CAAC,EAAC,SAAS,EAAwB,EAAE,KAAa,EAAE,IAAgB,EAAE,EAAE;wBAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;wBAC/C,0BAA0B;wBAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC9C,MAAM,EAAC,cAAc,EAAE,gBAAgB,EAAC,GAAG,IAAI,CAAC;wBAChD,OAAO;4BACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;4BAC5D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;yBAC7D,CAAC;oBACJ,CAAC;iBACF;gBACD,QAAQ,EAAE,CAAC,EAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,MAAM,EAAC,CAAC;gBACjE,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;aAC/C,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC9C,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAG,CAAC,gBAAgB,CAAC,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC;YAChF,GAAG,KAAK,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;gBACxC,EAAE,EAAE,UAAU,CAAC;;;;;;;;;;;;;GAapB;aACI,CAAC;YACF,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAG,CAAC;QACrD,gBAAgB,CAAC,GAAG,CAAC;YACnB,SAAS,EAAE;gBACT,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE;aAC/B;YACD,MAAM,EAAE,EAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAC;SACzC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAA8B;QACxC,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAC,GAAG,MAAM,CAAC;QAC9C,MAAM,EAAC,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,IACE,iBAAiB;YACjB,WAAW,CAAC,WAAW;YACvB,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;YACpC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrD,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAC1C,CAAC;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,EAAC,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAElE,UAAU,CAAC,QAAQ,CAAC;gBAClB,8CAA8C;gBAC9C,UAAU;gBACV,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE;gBAClC,UAAU,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/B,UAAU,EAAE;oBACV,cAAc;oBACd,gBAAgB;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,cAAc,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,gBAAgB,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,GAAuB;YACnC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC;QACF,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAErC,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtF,MAAM,EAAC,QAAQ,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1C,MAAM,EAAC,aAAa,EAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC7D,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YAChD,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YAEhD,2FAA2F;YAC3F,+DAA+D;YAC/D,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtD,gBAAgB,GAAG;gBACjB,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;oBACrF,UAAU,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;oBACrF,UAAU,CAAC,CAAC,CAAC;aAChB,CAAC;YACF,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAEpD,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAkB,CAAC;YACjD,kEAAkE;YAClE,sCAAsC;YACtC,0EAA0E;YAC1E,QAAQ,GAAG,QAAQ,CAAC,YAAY;gBAC9B,CAAC,CAAC,IAAI,YAAY,CAAC,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC;gBAC7E,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC;YAEtE,iEAAiE;YACjE,gBAAgB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtF,UAAU,GAAG,aAAa,CAAC;gBACzB,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,CAAC,CAAW,EAAE,EAAE;oBACxB,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/C,OAAO;wBACL,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;wBACzE,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;qBAC1E,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC9F,CAAC;IAEQ,IAAI,CAAC,IAAI;QAChB,6CAA6C;QAC7C,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAC,UAAU,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC;YACZ,qBAAqB,EAAE,wBAAwB,CAAC,EAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC;YACrF,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAIlB,MAAM,EAAC,qBAAqB,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,EAAC,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,WAAW,GAAG,gBAAgB,CAAC;gBACnC,QAAQ;gBACR,QAAQ,EAAE,qBAAqB;gBAC/B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,iBAAiB,CAAC,EAAU;QAC1B,MAAM,EAAC,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,WAAW;gBACd,UAAU,CAAC,cAAc,EAAE,CAAC;gBAE5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,MAAM,EAAC,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClE,UAAU,CAAC,QAAQ,CAAC;oBAClB,8CAA8C;oBAC9C,UAAU;oBACV,UAAU,EAAE;wBACV,cAAc;wBACd,gBAAgB;qBACjB;iBACF,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,QAAQ;gBACX,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM;YAER,QAAQ;YACR,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,YAAY;QACV,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,WAAW,CAAC;QACtC,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,MAAM,EAAC,gBAAgB,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE;aAC9B,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACxD,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1D,sBAAsB;QACtB,MAAM,SAAS,GACb,KAAK;YACL,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,IAAI,kBAAkB,CACpB,IAAI,CAAC,gBAAgB,CAAC;gBACpB,EAAE,EAAE,OAAO;aACZ,CAAC,EACF;gBACE,IAAI,EAAE,KAAK;gBACX,gBAAgB,EAAE,iBAAiB,CAAC,SAAS;gBAC7C,WAAW;gBACX,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;gBACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa;gBAC/C,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,oBAAoB;gBAC5D,UAAU,EAAE,QAAQ;aACrB,CACF,CAAC;QAEJ,sBAAsB;QACtB,MAAM,UAAU,GACd,QAAQ;YACR,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,IAAI,kBAAkB,CACpB,IAAI,CAAC,gBAAgB,CAAC;gBACpB,EAAE,EAAE,OAAO;aACZ,CAAC,EACF;gBACE,IAAI,EAAE,QAAQ;gBACd,gBAAgB,EAAE,iBAAiB,CAAC,SAAS;gBAC7C,WAAW;gBACX,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;gBAC3B,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa;aACpD,CACF,CAAC;QAEJ,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,MAA4B;QACzC,MAAM,IAAI,GAA4B,MAAM,CAAC,IAAI,CAAC;QAClD,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC;QACtB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG;gBACZ,OAAO,EAAG,MAAuC,CAAC,OAAO;aAC1D,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;AA/SM,mBAAS,GAAG,cAAc,CAAC;AAC3B,sBAAY,GAAG,YAAY,CAAC;eALhB,SAAS"}
@@ -0,0 +1,60 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { getCode, getLines, getPolygons } from "./marching-squares.js";
5
+ // Given all the cell weights, generates contours for each threshold.
6
+ /* eslint-disable max-depth */
7
+ export function generateContours({ contours, getValue, xRange, yRange }) {
8
+ const contourLines = [];
9
+ const contourPolygons = [];
10
+ let segmentIndex = 0;
11
+ let polygonIndex = 0;
12
+ for (let i = 0; i < contours.length; i++) {
13
+ const contour = contours[i];
14
+ const z = contour.zIndex ?? i;
15
+ const { threshold } = contour;
16
+ for (let x = xRange[0] - 1; x < xRange[1]; x++) {
17
+ for (let y = yRange[0] - 1; y < yRange[1]; y++) {
18
+ // Get the MarchingSquares code based on neighbor cell weights.
19
+ const { code, meanCode } = getCode({
20
+ getValue,
21
+ threshold,
22
+ x,
23
+ y,
24
+ xRange,
25
+ yRange
26
+ });
27
+ const opts = {
28
+ x,
29
+ y,
30
+ z,
31
+ code,
32
+ meanCode
33
+ };
34
+ if (Array.isArray(threshold)) {
35
+ // ISO bands
36
+ const polygons = getPolygons(opts);
37
+ for (const polygon of polygons) {
38
+ contourPolygons[polygonIndex++] = {
39
+ vertices: polygon,
40
+ contour
41
+ };
42
+ }
43
+ }
44
+ else {
45
+ // ISO lines
46
+ const path = getLines(opts);
47
+ if (path.length > 0) {
48
+ contourLines[segmentIndex++] = {
49
+ vertices: path,
50
+ contour
51
+ };
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ return { lines: contourLines, polygons: contourPolygons };
58
+ }
59
+ /* eslint-enable max-depth */
60
+ //# sourceMappingURL=contour-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-utils.js","sourceRoot":"","sources":["../../src/contour-layer/contour-utils.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAC,8BAA2B;AAoClE,qEAAqE;AACrE,8BAA8B;AAC9B,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EAMP;IACC,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAC,SAAS,EAAC,GAAG,OAAO,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,+DAA+D;gBAC/D,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,OAAO,CAAC;oBAC/B,QAAQ;oBACR,SAAS;oBACT,CAAC;oBACD,CAAC;oBACD,MAAM;oBACN,MAAM;iBACP,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG;oBACX,CAAC;oBACD,CAAC;oBACD,CAAC;oBACD,IAAI;oBACJ,QAAQ;iBACT,CAAC;gBACF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,YAAY;oBACZ,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,eAAe,CAAC,YAAY,EAAE,CAAC,GAAG;4BAChC,QAAQ,EAAE,OAAO;4BACjB,OAAO;yBACR,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,YAAY;oBACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpB,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG;4BAC7B,QAAQ,EAAE,IAAI;4BACd,OAAO;yBACR,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAC,CAAC;AAC1D,CAAC;AACD,6BAA6B"}
@@ -0,0 +1,341 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Code to Offsets Map needed to implement Marching Squares algorithm
5
+ // Ref: https://en.wikipedia.org/wiki/Marching_squares
6
+ // Table to map code to the intersection offsets
7
+ // All offsets are relative to the center of marching cell (which is top right corner of grid-cell, and center of marching-square)
8
+ const HALF = 0.5;
9
+ const ONE6TH = 1 / 6;
10
+ const OFFSET = {
11
+ N: [0, HALF], // NORTH
12
+ E: [HALF, 0], // EAST
13
+ S: [0, -HALF], // SOUTH
14
+ W: [-HALF, 0], // WEST
15
+ // CORNERS
16
+ NE: [HALF, HALF],
17
+ NW: [-HALF, HALF],
18
+ SE: [HALF, -HALF],
19
+ SW: [-HALF, -HALF]
20
+ };
21
+ // NOTE: vertices are ordered in CCW direction, starting from NW corner
22
+ // Triangles
23
+ const SW_TRIANGLE = [OFFSET.W, OFFSET.SW, OFFSET.S];
24
+ const SE_TRIANGLE = [OFFSET.S, OFFSET.SE, OFFSET.E];
25
+ const NE_TRIANGLE = [OFFSET.E, OFFSET.NE, OFFSET.N];
26
+ const NW_TRIANGLE = [OFFSET.NW, OFFSET.W, OFFSET.N];
27
+ // Trapezoids
28
+ const SW_TRAPEZOID = [
29
+ [-HALF, ONE6TH],
30
+ [-HALF, -ONE6TH],
31
+ [-ONE6TH, -HALF],
32
+ [ONE6TH, -HALF]
33
+ ];
34
+ const SE_TRAPEZOID = [
35
+ [-ONE6TH, -HALF],
36
+ [ONE6TH, -HALF],
37
+ [HALF, -ONE6TH],
38
+ [HALF, ONE6TH]
39
+ ];
40
+ const NE_TRAPEZOID = [
41
+ [HALF, -ONE6TH],
42
+ [HALF, ONE6TH],
43
+ [ONE6TH, HALF],
44
+ [-ONE6TH, HALF]
45
+ ];
46
+ const NW_TRAPEZOID = [
47
+ [-HALF, ONE6TH],
48
+ [-HALF, -ONE6TH],
49
+ [ONE6TH, HALF],
50
+ [-ONE6TH, HALF]
51
+ ];
52
+ // Rectangles
53
+ const S_RECTANGLE = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.E];
54
+ const E_RECTANGLE = [OFFSET.S, OFFSET.SE, OFFSET.NE, OFFSET.N];
55
+ const N_RECTANGLE = [OFFSET.NW, OFFSET.W, OFFSET.E, OFFSET.NE];
56
+ const W_RECTANGLE = [OFFSET.NW, OFFSET.SW, OFFSET.S, OFFSET.N];
57
+ const EW_RECTANGEL = [
58
+ [-HALF, ONE6TH],
59
+ [-HALF, -ONE6TH],
60
+ [HALF, -ONE6TH],
61
+ [HALF, ONE6TH]
62
+ ];
63
+ const SN_RECTANGEL = [
64
+ [-ONE6TH, -HALF],
65
+ [ONE6TH, -HALF],
66
+ [ONE6TH, HALF],
67
+ [-ONE6TH, HALF]
68
+ ];
69
+ // Square
70
+ const SQUARE = [OFFSET.NW, OFFSET.SW, OFFSET.SE, OFFSET.NE];
71
+ // Pentagons
72
+ const SW_PENTAGON = [OFFSET.NW, OFFSET.SW, OFFSET.SE, OFFSET.E, OFFSET.N];
73
+ const SE_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.NE, OFFSET.N];
74
+ const NE_PENTAGON = [OFFSET.NW, OFFSET.W, OFFSET.S, OFFSET.SE, OFFSET.NE];
75
+ const NW_PENTAGON = [OFFSET.NW, OFFSET.SW, OFFSET.S, OFFSET.E, OFFSET.NE];
76
+ const NW_N_PENTAGON = [OFFSET.NW, OFFSET.W, [HALF, -ONE6TH], [HALF, ONE6TH], OFFSET.N];
77
+ const NE_E_PENTAGON = [[-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.E, OFFSET.NE, OFFSET.N];
78
+ const SE_S_PENTAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.S, OFFSET.SE, OFFSET.E];
79
+ const SW_W_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, [ONE6TH, HALF], [-ONE6TH, HALF]];
80
+ const NW_W_PENTAGON = [OFFSET.NW, OFFSET.W, [-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.N];
81
+ const NE_N_PENTAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.E, OFFSET.NE, OFFSET.N];
82
+ const SE_E_PENTAGON = [OFFSET.S, OFFSET.SE, OFFSET.E, [ONE6TH, HALF], [-ONE6TH, HALF]];
83
+ const SW_S_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, [HALF, -ONE6TH], [HALF, ONE6TH]];
84
+ // Hexagon
85
+ const S_HEXAGON = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.E, [ONE6TH, HALF], [-ONE6TH, HALF]];
86
+ const E_HEXAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.S, OFFSET.SE, OFFSET.NE, OFFSET.N];
87
+ const N_HEXAGON = [OFFSET.NW, OFFSET.W, [-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.E, OFFSET.NE];
88
+ const W_HEXAGON = [OFFSET.NW, OFFSET.SW, OFFSET.S, [HALF, -ONE6TH], [HALF, ONE6TH], OFFSET.N];
89
+ const SW_NE_HEXAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, OFFSET.E, OFFSET.NE, OFFSET.N];
90
+ const NW_SE_HEXAGON = [OFFSET.NW, OFFSET.W, OFFSET.S, OFFSET.SE, OFFSET.E, OFFSET.N];
91
+ // Heptagon (7-sided)
92
+ const NE_HEPTAGON = [
93
+ [-HALF, ONE6TH],
94
+ [-HALF, -ONE6TH],
95
+ [-ONE6TH, -HALF],
96
+ [ONE6TH, -HALF],
97
+ OFFSET.E,
98
+ OFFSET.NE,
99
+ OFFSET.N
100
+ ];
101
+ const SW_HEPTAGON = [
102
+ OFFSET.W,
103
+ OFFSET.SW,
104
+ OFFSET.S,
105
+ [HALF, -ONE6TH],
106
+ [HALF, ONE6TH],
107
+ [ONE6TH, HALF],
108
+ [-ONE6TH, HALF]
109
+ ];
110
+ const NW_HEPTAGON = [
111
+ OFFSET.NW,
112
+ OFFSET.W,
113
+ [-ONE6TH, -HALF],
114
+ [ONE6TH, -HALF],
115
+ [HALF, -ONE6TH],
116
+ [HALF, ONE6TH],
117
+ OFFSET.N
118
+ ];
119
+ const SE_HEPTAGON = [
120
+ [-HALF, ONE6TH],
121
+ [-HALF, -ONE6TH],
122
+ OFFSET.S,
123
+ OFFSET.SE,
124
+ OFFSET.E,
125
+ [ONE6TH, HALF],
126
+ [-ONE6TH, HALF]
127
+ ];
128
+ // Octagon
129
+ const OCTAGON = [
130
+ [-HALF, ONE6TH],
131
+ [-HALF, -ONE6TH],
132
+ [-ONE6TH, -HALF],
133
+ [ONE6TH, -HALF],
134
+ [HALF, -ONE6TH],
135
+ [HALF, ONE6TH],
136
+ [ONE6TH, HALF],
137
+ [-ONE6TH, HALF]
138
+ ];
139
+ // Note: above wiki page invertes white/black dots for generating the code, we don't
140
+ export const ISOLINES_CODE_OFFSET_MAP = {
141
+ // key is equal to the code of 4 vertices (invert the code specified in wiki)
142
+ // value can be an array or an Object
143
+ // Array : [line] or [line, line], where each line is [start-point, end-point], and each point is [x, y]
144
+ // Object : to handle saddle cases, whos output depends on mean value of all 4 corners
145
+ // key: code of mean value (0 or 1)
146
+ // value: Array , as above defines one or two line segments
147
+ 0: [],
148
+ 1: [[OFFSET.W, OFFSET.S]],
149
+ 2: [[OFFSET.S, OFFSET.E]],
150
+ 3: [[OFFSET.W, OFFSET.E]],
151
+ 4: [[OFFSET.N, OFFSET.E]],
152
+ 5: {
153
+ 0: [
154
+ [OFFSET.W, OFFSET.S],
155
+ [OFFSET.N, OFFSET.E]
156
+ ],
157
+ 1: [
158
+ [OFFSET.W, OFFSET.N],
159
+ [OFFSET.S, OFFSET.E]
160
+ ]
161
+ },
162
+ 6: [[OFFSET.N, OFFSET.S]],
163
+ 7: [[OFFSET.W, OFFSET.N]],
164
+ 8: [[OFFSET.W, OFFSET.N]],
165
+ 9: [[OFFSET.N, OFFSET.S]],
166
+ 10: {
167
+ 0: [
168
+ [OFFSET.W, OFFSET.N],
169
+ [OFFSET.S, OFFSET.E]
170
+ ],
171
+ 1: [
172
+ [OFFSET.W, OFFSET.S],
173
+ [OFFSET.N, OFFSET.E]
174
+ ]
175
+ },
176
+ 11: [[OFFSET.N, OFFSET.E]],
177
+ 12: [[OFFSET.W, OFFSET.E]],
178
+ 13: [[OFFSET.S, OFFSET.E]],
179
+ 14: [[OFFSET.W, OFFSET.S]],
180
+ 15: []
181
+ };
182
+ function ternaryToIndex(ternary) {
183
+ return parseInt(ternary, 4);
184
+ }
185
+ export const ISOBANDS_CODE_OFFSET_MAP = {
186
+ // Below list of cases, follow the same order as in above mentioned wiki page.
187
+ // Each case has its code on first commented line // T,TR,R,C
188
+ // where T: Top, TR: Top-right, R: Right and C: current, each will be either 0, 1 or 2
189
+ // final code is binary representation of above code , where takes 2 digits
190
+ // for example: code 2-2-2-1 => 10-10-10-01 => 10101001 => 169
191
+ // no contours
192
+ [ternaryToIndex('0000')]: [],
193
+ [ternaryToIndex('2222')]: [],
194
+ // single triangle
195
+ [ternaryToIndex('2221')]: [SW_TRIANGLE],
196
+ [ternaryToIndex('2212')]: [SE_TRIANGLE],
197
+ [ternaryToIndex('2122')]: [NE_TRIANGLE],
198
+ [ternaryToIndex('1222')]: [NW_TRIANGLE],
199
+ [ternaryToIndex('0001')]: [SW_TRIANGLE],
200
+ [ternaryToIndex('0010')]: [SE_TRIANGLE],
201
+ [ternaryToIndex('0100')]: [NE_TRIANGLE],
202
+ [ternaryToIndex('1000')]: [NW_TRIANGLE],
203
+ // single trapezoid
204
+ [ternaryToIndex('2220')]: [SW_TRAPEZOID],
205
+ [ternaryToIndex('2202')]: [SE_TRAPEZOID],
206
+ [ternaryToIndex('2022')]: [NE_TRAPEZOID],
207
+ [ternaryToIndex('0222')]: [NW_TRAPEZOID],
208
+ [ternaryToIndex('0002')]: [SW_TRAPEZOID],
209
+ [ternaryToIndex('0020')]: [SE_TRAPEZOID],
210
+ [ternaryToIndex('0200')]: [NE_TRAPEZOID],
211
+ [ternaryToIndex('2000')]: [NW_TRAPEZOID],
212
+ // single rectangle
213
+ [ternaryToIndex('0011')]: [S_RECTANGLE],
214
+ [ternaryToIndex('0110')]: [E_RECTANGLE],
215
+ [ternaryToIndex('1100')]: [N_RECTANGLE],
216
+ [ternaryToIndex('1001')]: [W_RECTANGLE],
217
+ [ternaryToIndex('2211')]: [S_RECTANGLE],
218
+ [ternaryToIndex('2112')]: [E_RECTANGLE],
219
+ [ternaryToIndex('1122')]: [N_RECTANGLE],
220
+ [ternaryToIndex('1221')]: [W_RECTANGLE],
221
+ [ternaryToIndex('2200')]: [EW_RECTANGEL],
222
+ [ternaryToIndex('2002')]: [SN_RECTANGEL],
223
+ [ternaryToIndex('0022')]: [EW_RECTANGEL],
224
+ [ternaryToIndex('0220')]: [SN_RECTANGEL],
225
+ // single square
226
+ // 1111
227
+ [ternaryToIndex('1111')]: [SQUARE],
228
+ // single pentagon
229
+ [ternaryToIndex('1211')]: [SW_PENTAGON],
230
+ [ternaryToIndex('2111')]: [SE_PENTAGON],
231
+ [ternaryToIndex('1112')]: [NE_PENTAGON],
232
+ [ternaryToIndex('1121')]: [NW_PENTAGON],
233
+ [ternaryToIndex('1011')]: [SW_PENTAGON],
234
+ [ternaryToIndex('0111')]: [SE_PENTAGON],
235
+ [ternaryToIndex('1110')]: [NE_PENTAGON],
236
+ [ternaryToIndex('1101')]: [NW_PENTAGON],
237
+ [ternaryToIndex('1200')]: [NW_N_PENTAGON],
238
+ [ternaryToIndex('0120')]: [NE_E_PENTAGON],
239
+ [ternaryToIndex('0012')]: [SE_S_PENTAGON],
240
+ [ternaryToIndex('2001')]: [SW_W_PENTAGON],
241
+ [ternaryToIndex('1022')]: [NW_N_PENTAGON],
242
+ [ternaryToIndex('2102')]: [NE_E_PENTAGON],
243
+ [ternaryToIndex('2210')]: [SE_S_PENTAGON],
244
+ [ternaryToIndex('0221')]: [SW_W_PENTAGON],
245
+ [ternaryToIndex('1002')]: [NW_W_PENTAGON],
246
+ [ternaryToIndex('2100')]: [NE_N_PENTAGON],
247
+ [ternaryToIndex('0210')]: [SE_E_PENTAGON],
248
+ [ternaryToIndex('0021')]: [SW_S_PENTAGON],
249
+ [ternaryToIndex('1220')]: [NW_W_PENTAGON],
250
+ [ternaryToIndex('0122')]: [NE_N_PENTAGON],
251
+ [ternaryToIndex('2012')]: [SE_E_PENTAGON],
252
+ [ternaryToIndex('2201')]: [SW_S_PENTAGON],
253
+ // single hexagon
254
+ [ternaryToIndex('0211')]: [S_HEXAGON],
255
+ [ternaryToIndex('2110')]: [E_HEXAGON],
256
+ [ternaryToIndex('1102')]: [N_HEXAGON],
257
+ [ternaryToIndex('1021')]: [W_HEXAGON],
258
+ [ternaryToIndex('2011')]: [S_HEXAGON],
259
+ [ternaryToIndex('0112')]: [E_HEXAGON],
260
+ [ternaryToIndex('1120')]: [N_HEXAGON],
261
+ [ternaryToIndex('1201')]: [W_HEXAGON],
262
+ [ternaryToIndex('2101')]: [SW_NE_HEXAGON],
263
+ [ternaryToIndex('0121')]: [SW_NE_HEXAGON],
264
+ [ternaryToIndex('1012')]: [NW_SE_HEXAGON],
265
+ [ternaryToIndex('1210')]: [NW_SE_HEXAGON],
266
+ // 6-sided polygons based on mean weight
267
+ // NOTE: merges mean value codes for extreme changes (as per above Wiki doc)
268
+ [ternaryToIndex('0101')]: {
269
+ 0: [SW_TRIANGLE, NE_TRIANGLE],
270
+ 1: [SW_NE_HEXAGON],
271
+ 2: [SW_NE_HEXAGON]
272
+ },
273
+ [ternaryToIndex('1010')]: {
274
+ 0: [NW_TRIANGLE, SE_TRIANGLE],
275
+ 1: [NW_SE_HEXAGON],
276
+ 2: [NW_SE_HEXAGON]
277
+ },
278
+ [ternaryToIndex('2121')]: {
279
+ 0: [SW_NE_HEXAGON],
280
+ 1: [SW_NE_HEXAGON],
281
+ 2: [SW_TRIANGLE, NE_TRIANGLE]
282
+ },
283
+ [ternaryToIndex('1212')]: {
284
+ 0: [NW_SE_HEXAGON],
285
+ 1: [NW_SE_HEXAGON],
286
+ 2: [NW_TRIANGLE, SE_TRIANGLE]
287
+ },
288
+ // 7-sided polygons based on mean weight
289
+ [ternaryToIndex('2120')]: {
290
+ 0: [NE_HEPTAGON],
291
+ 1: [NE_HEPTAGON],
292
+ 2: [SW_TRAPEZOID, NE_TRIANGLE]
293
+ },
294
+ [ternaryToIndex('2021')]: {
295
+ 0: [SW_HEPTAGON],
296
+ 1: [SW_HEPTAGON],
297
+ 2: [SW_TRIANGLE, NE_TRAPEZOID]
298
+ },
299
+ [ternaryToIndex('1202')]: {
300
+ 0: [NW_HEPTAGON],
301
+ 1: [NW_HEPTAGON],
302
+ 2: [NW_TRIANGLE, SE_TRAPEZOID]
303
+ },
304
+ [ternaryToIndex('0212')]: {
305
+ 0: [SE_HEPTAGON],
306
+ 1: [SE_HEPTAGON],
307
+ 2: [SE_TRIANGLE, NW_TRAPEZOID]
308
+ },
309
+ [ternaryToIndex('0102')]: {
310
+ 0: [SW_TRAPEZOID, NE_TRIANGLE],
311
+ 1: [NE_HEPTAGON],
312
+ 2: [NE_HEPTAGON]
313
+ },
314
+ [ternaryToIndex('0201')]: {
315
+ 0: [SW_TRIANGLE, NE_TRAPEZOID],
316
+ 1: [SW_HEPTAGON],
317
+ 2: [SW_HEPTAGON]
318
+ },
319
+ [ternaryToIndex('1020')]: {
320
+ 0: [NW_TRIANGLE, SE_TRAPEZOID],
321
+ 1: [NW_HEPTAGON],
322
+ 2: [NW_HEPTAGON]
323
+ },
324
+ [ternaryToIndex('2010')]: {
325
+ 0: [SE_TRIANGLE, NW_TRAPEZOID],
326
+ 1: [SE_HEPTAGON],
327
+ 2: [SE_HEPTAGON]
328
+ },
329
+ // 8-sided polygons based on mean weight
330
+ [ternaryToIndex('2020')]: {
331
+ 0: [NW_TRAPEZOID, SE_TRAPEZOID],
332
+ 1: [OCTAGON],
333
+ 2: [SW_TRAPEZOID, NE_TRAPEZOID]
334
+ },
335
+ [ternaryToIndex('0202')]: {
336
+ 0: [NE_TRAPEZOID, SW_TRAPEZOID],
337
+ 1: [OCTAGON],
338
+ 2: [NW_TRAPEZOID, SE_TRAPEZOID]
339
+ }
340
+ };
341
+ //# sourceMappingURL=marching-squares-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marching-squares-codes.js","sourceRoot":"","sources":["../../src/contour-layer/marching-squares-codes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // All utility methods needed to implement Marching Squares algorithm
5
+ // Ref: https://en.wikipedia.org/wiki/Marching_squares
6
+ import { ISOLINES_CODE_OFFSET_MAP, ISOBANDS_CODE_OFFSET_MAP } from "./marching-squares-codes.js";
7
+ // Utility methods
8
+ function getVertexCode(weight, threshold) {
9
+ // threshold must be a single value or a range (array of size 2)
10
+ if (Number.isNaN(weight)) {
11
+ return 0;
12
+ }
13
+ // Iso-bands
14
+ if (Array.isArray(threshold)) {
15
+ if (weight < threshold[0]) {
16
+ return 0;
17
+ }
18
+ return weight < threshold[1] ? 1 : 2;
19
+ }
20
+ // Iso-lines
21
+ return weight >= threshold ? 1 : 0;
22
+ }
23
+ // Returns marching square code for given cell
24
+ /* eslint-disable complexity, max-statements*/
25
+ export function getCode(opts) {
26
+ // Assumptions
27
+ // Origin is on bottom-left , and X increase to right, Y to top
28
+ // When processing one cell, we process 4 cells, by extending row to top and on column to right
29
+ // to create a 2X2 cell grid
30
+ const { x, y, xRange, yRange, getValue, threshold } = opts;
31
+ const isLeftBoundary = x < xRange[0];
32
+ const isRightBoundary = x >= xRange[1] - 1;
33
+ const isBottomBoundary = y < yRange[0];
34
+ const isTopBoundary = y >= yRange[1] - 1;
35
+ const isBoundary = isLeftBoundary || isRightBoundary || isBottomBoundary || isTopBoundary;
36
+ let weights = 0;
37
+ let current;
38
+ let right;
39
+ let top;
40
+ let topRight;
41
+ // TOP
42
+ if (isLeftBoundary || isTopBoundary) {
43
+ top = 0;
44
+ }
45
+ else {
46
+ const w = getValue(x, y + 1);
47
+ top = getVertexCode(w, threshold);
48
+ weights += w;
49
+ }
50
+ // TOP-RIGHT
51
+ if (isRightBoundary || isTopBoundary) {
52
+ topRight = 0;
53
+ }
54
+ else {
55
+ const w = getValue(x + 1, y + 1);
56
+ topRight = getVertexCode(w, threshold);
57
+ weights += w;
58
+ }
59
+ // RIGHT
60
+ if (isRightBoundary || isBottomBoundary) {
61
+ right = 0;
62
+ }
63
+ else {
64
+ const w = getValue(x + 1, y);
65
+ right = getVertexCode(w, threshold);
66
+ weights += w;
67
+ }
68
+ // CURRENT
69
+ if (isLeftBoundary || isBottomBoundary) {
70
+ current = 0;
71
+ }
72
+ else {
73
+ const w = getValue(x, y);
74
+ current = getVertexCode(w, threshold);
75
+ weights += w;
76
+ }
77
+ let code = -1;
78
+ if (Number.isFinite(threshold)) {
79
+ code = (top << 3) | (topRight << 2) | (right << 1) | current;
80
+ }
81
+ if (Array.isArray(threshold)) {
82
+ code = (top << 6) | (topRight << 4) | (right << 2) | current;
83
+ }
84
+ let meanCode = 0;
85
+ // meanCode is only needed for saddle cases, and they should
86
+ // only occur when we are not processing a cell on boundary
87
+ // because when on a boundary either, bottom-row, top-row, left-column or right-column will have both 0 codes
88
+ if (!isBoundary) {
89
+ meanCode = getVertexCode(weights / 4, threshold);
90
+ }
91
+ return { code, meanCode };
92
+ }
93
+ /* eslint-enable complexity, max-statements*/
94
+ // Returns intersection vertices for given cellindex
95
+ // [x, y] refers current marching cell, reference vertex is always top-right corner
96
+ export function getPolygons(opts) {
97
+ const { x, y, z, code, meanCode } = opts;
98
+ let offsets = ISOBANDS_CODE_OFFSET_MAP[code];
99
+ // handle saddle cases
100
+ if (!Array.isArray(offsets)) {
101
+ offsets = offsets[meanCode];
102
+ }
103
+ // Reference vertex is at top-right move to top-right corner
104
+ const rX = x + 1;
105
+ const rY = y + 1;
106
+ // offsets format
107
+ // [[1A, 1B, 1C, ...], [2A, 2B, 2C, ...]],
108
+ // vertices format
109
+ // [
110
+ // [[x1A, y1A], [x1B, y1B], [x1C, y1C] ... ],
111
+ // ...
112
+ // ]
113
+ const polygons = [];
114
+ offsets.forEach(polygonOffsets => {
115
+ const polygon = [];
116
+ polygonOffsets.forEach(xyOffset => {
117
+ const vX = rX + xyOffset[0];
118
+ const vY = rY + xyOffset[1];
119
+ polygon.push([vX, vY, z]);
120
+ });
121
+ polygons.push(polygon);
122
+ });
123
+ return polygons;
124
+ }
125
+ // Returns intersection vertices for given cellindex
126
+ // [x, y] refers current marching cell, reference vertex is always top-right corner
127
+ export function getLines(opts) {
128
+ const { x, y, z, code, meanCode } = opts;
129
+ let offsets = ISOLINES_CODE_OFFSET_MAP[code];
130
+ // handle saddle cases
131
+ if (!Array.isArray(offsets)) {
132
+ offsets = offsets[meanCode];
133
+ }
134
+ // Reference vertex is at top-right move to top-right corner
135
+ const rX = x + 1;
136
+ const rY = y + 1;
137
+ // offsets format
138
+ // [[1A, 1B], [2A, 2B]],
139
+ // vertices format
140
+ // [[x1A, y1A], [x1B, y1B], [x2A, x2B], ...],
141
+ const lines = [];
142
+ offsets.forEach(xyOffsets => {
143
+ xyOffsets.forEach(offset => {
144
+ const vX = rX + offset[0];
145
+ const vY = rY + offset[1];
146
+ lines.push([vX, vY, z]);
147
+ });
148
+ });
149
+ return lines;
150
+ }
151
+ //# sourceMappingURL=marching-squares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marching-squares.js","sourceRoot":"","sources":["../../src/contour-layer/marching-squares.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { CPUAggregator, WebGLAggregator } from "../common/aggregator/index.js";
5
+ /** Returns an accessor to the aggregated values from bin id */
6
+ export function getAggregatorValueReader(opts) {
7
+ const { aggregator, binIdRange, channel } = opts;
8
+ if (aggregator instanceof WebGLAggregator) {
9
+ const buffer = aggregator.getResult(channel)?.buffer;
10
+ if (buffer) {
11
+ const values = new Float32Array(buffer.readSyncWebGL().buffer);
12
+ return getWebGLAggregatorValueReader(values, binIdRange);
13
+ }
14
+ }
15
+ if (aggregator instanceof CPUAggregator) {
16
+ const values = aggregator.getResult(channel)?.value;
17
+ const ids = aggregator.getBins()?.value;
18
+ if (ids && values) {
19
+ return getCPUAggregatorValueReader(values, ids, aggregator.binCount);
20
+ }
21
+ }
22
+ return null;
23
+ }
24
+ function getWebGLAggregatorValueReader(values, binIdRange) {
25
+ const [[minX, maxX], [minY, maxY]] = binIdRange;
26
+ const width = maxX - minX;
27
+ const height = maxY - minY;
28
+ return (x, y) => {
29
+ x -= minX;
30
+ y -= minY;
31
+ if (x < 0 || x >= width || y < 0 || y >= height) {
32
+ return NaN;
33
+ }
34
+ return values[y * width + x];
35
+ };
36
+ }
37
+ function getCPUAggregatorValueReader(values, ids, count) {
38
+ const idMap = {};
39
+ for (let i = 0; i < count; i++) {
40
+ const x = ids[i * 2];
41
+ const y = ids[i * 2 + 1];
42
+ idMap[x] = idMap[x] || {};
43
+ idMap[x][y] = values[i];
44
+ }
45
+ return (x, y) => idMap[x]?.[y] ?? NaN;
46
+ }
47
+ //# sourceMappingURL=value-reader.js.map