@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.82 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{createArea as t}from"../../core/quantityUtils.js";import{areaUnitFromSpatialReference as o}from"../../core/unitUtils.js";import{e as r}from"../../chunks/earcut.js";import{i as n,b as e,k as s}from"../../chunks/vec32.js";import{create as i}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectVectorToVector as c}from"../../geometry/projection/projectVectorToVector.js";import{fromPoints as f,wrap as l,getNormal as u,projectPointLocal as m}from"../../geometry/support/plane.js";import{areaPoints2d as p}from"../../geometry/support/triangle.js";import{computeEuclideanMeasurementSR as a}from"./measurementUtils.js";function g(t,o=k()){return h(t,o)}function j(t,o=k()){return h(t,o,!1)}function h(r,g,j=r.hasZ){const h=a(r.spatialReference),k=o(h);if(null==k)return null;const b=(t,o)=>!(o.length<2)&&(n(t,o[0],o[1],j&&o[2]||0),!0);let v=0;for(const t of r.rings){const o=t.length;if(o<3)continue;const{positionsWorldCoords:a}=g;for(;a.length<o;)a.push(i());const j=y,k=n(d,0,0,0),x=1/o;for(let n=0;n<o;n++){if(!b(j,t[n]))return null;if(!c(j,r.spatialReference,a[n],h))return null;e(k,k,a[n],x)}const C=f(a[0],a[1],k,l());if(0===s(u(C)))continue;for(let t=0;t<o;t++)m(C,k,a[t],a[t]);const R=U(a);for(let t=0;t<R.length;t+=3)v+=p(a[R[t]],a[R[t+1]],a[R[t+2]])}return t(v,k)}const y=i(),d=i();function k(){return{positionsWorldCoords:[]}}function U(t){return r(b(t),[],2)}function b(t){const o=new Float64Array(2*t.length);for(let r=0;r<t.length;++r){const n=t[r],e=2*r;o[e]=n[0],o[e+1]=n[1]}return o}export{h as computeEuclideanPlanarArea,k as createEuclideanPlanarAreaCache,j as euclideanHorizontalPlanarArea,g as euclideanPlanarArea,U as triangulate};