@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.37 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 n from"../Multipoint.js";import e from"../Point.js";import t from"../Polygon.js";import s from"../Polyline.js";import{isClockwise as i}from"./coordsUtils.js";function o(n,e,t,s){const i=[];for(const o of n){const n=o.slice();i.push(n);const r=e*(o[0]-s.x)-t*(o[1]-s.y)+s.x,a=t*(o[0]-s.x)+e*(o[1]-s.y)+s.y;n[0]=r,n[1]=a}return i}function r(r,a,c){const{hasM:m,hasZ:x,spatialReference:f}=r,p=a*Math.PI/180,l=Math.cos(p),h=Math.sin(p);if("xmin"in r&&(c=c??r.center,r=new t({spatialReference:f,rings:[[[r.xmin,r.ymin],[r.xmin,r.ymax],[r.xmax,r.ymax],[r.xmax,r.ymin],[r.xmin,r.ymin]]]})),"paths"in r){c=c??r.extent.center;const n=[];for(const e of r.paths)n.push(o(e,l,h,c));return new s({hasM:m,hasZ:x,spatialReference:f,paths:n})}if("rings"in r){c=c??r.extent.center;const n=[];for(const e of r.rings){const t=i(e),s=o(e,l,h,c);i(s)!==t&&s.reverse(),n.push(s)}return new t({hasM:m,hasZ:x,spatialReference:f,rings:n})}if("x"in r){c=c??r;const n=new e({x:l*(r.x-c.x)-h*(r.y-c.y)+c.x,y:h*(r.x-c.x)+l*(r.y-c.y)+c.y,spatialReference:f});return null!=r.z&&(n.z=r.z),null!=r.m&&(n.m=r.m),n}return"points"in r?(c=c??r.extent.center,new n({hasM:m,hasZ:x,points:o(r.points,l,h,c),spatialReference:f})):null}export{r as default};