UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 1.99 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */ import{equals as t}from"../../core/arrayUtils.js";import{rotate as e}from"../../core/libs/gl-matrix-2/math/vec2.js";import n from"../Multipoint.js";import s from"../Point.js";import r from"../Polygon.js";import o from"../Polyline.js";import{isCurvedGeometry as a,getEndpoint as i,isCoordinate as c,isBezierCurve as p,isCircularArc as u}from"./curves/curveUtils.js";import{rotateBezier as f,rotateCircularArc as h,rotateEllipticArc as l}from"./curves/rotate.js";function m(t,e,n,s){const r=[];for(const o of t){const t=o.slice();r.push(t);const a=e*(o[0]-s.x)-n*(o[1]-s.y)+s.x,i=n*(o[0]-s.x)+e*(o[1]-s.y)+s.y;t[0]=a,t[1]=i}return r}function x(t,n,s,r){const o=[r.x,r.y];if(c(t)){const n=[...t];return e(n,n,o,s)}return p(t)?f(t,o,s):u(t)?h(t,o,s):n?l(n,t,o,s):t}function y(e,n,s,r){const o=[];for(const a of e){const e=[],c=r&&a.length>0&&t(i(a[0]),i(a.at(-1)));for(let t=0;t<a.length;t++){const r=a[t],o=t>0?i(a[t-1]):void 0;e.push(x(r,o,n,s))}c&&(e[0]=[...i(e.at(-1))]),o.push(e)}return o}function v({spatialReference:t,xmin:e,ymin:n,ymax:s,xmax:o}){return new r({spatialReference:t??void 0,hasM:!1,hasZ:!1,rings:[[[e,n],[e,s],[o,s],[o,n],[e,n]]]})}function g(t,e,i){const{hasM:c,hasZ:p,spatialReference:u,type:f}=t,h=e*Math.PI/180,l=Math.cos(h),x=Math.sin(h);switch(f){case"point":return i=i??t,new s({x:l*(t.x-i.x)-x*(t.y-i.y)+i.x,y:x*(t.x-i.x)+l*(t.y-i.y)+i.y,z:t.z,m:t.m,spatialReference:u});case"extent":case"polygon":{t="extent"===f?v(t):t,i=i??t.extent.center;const e=a(t),n=y(t.curveRings??t.rings,h,i,!0);return new r({spatialReference:u,hasZ:t.hasZ,hasM:t.hasM,curveRings:e?n:void 0,rings:e?void 0:n})}case"polyline":{i=i??t.extent.center;const e=a(t),n=y(t.curvePaths??t.paths,h,i,!1);return new o({hasZ:p,hasM:c,spatialReference:u,curvePaths:e?n:void 0,paths:e?void 0:n})}case"multipoint":return i??=t.extent.center,new n({hasM:c,hasZ:p,points:m(t.points,l,x,i),spatialReference:u})}return null}export{g as default};