UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.39 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{deg2rad as e}from"../../core/mathUtils.js";import{create as r}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getProjectorClassification as t,copy3 as n,ProjectionID as o,projectionTable as s,wgs84ToWebMercator as i}from"./projectors.js";import{earth as c}from"../support/Ellipsoid.js";function l(e,r,l,f){if(null==r||null==f)return!1;const p=t(r,f);if(null==p?.projector)return!1;if(p.projector===n)return l[0]=e[0],l[1]=e[1],l[2]=e[2],l[3]=e[3],!0;const{source:E,dest:m,projector:R}=p;if(m.spatialReferenceId===o.WEB_MERCATOR){const r=s[E.spatialReferenceId][o.WGS84];return null!=r&&(r(e,0,u,0),i(u,0,l,0),l[3]=a(u[1],e[2],e[3],c.radius),!0)}if(E.spatialReferenceId!==o.WGS84&&E.spatialReferenceId!==o.CGCS2000||m.spatialReferenceId!==o.PLATE_CARREE){R(e,0,l,0);const r=E.metersPerUnit??1,t=m.metersPerUnit??1;l[3]=e[3]*r/t}else{const r=s[E.spatialReferenceId][o.SPHERICAL_ECEF],t=s[o.SPHERICAL_ECEF][o.PLATE_CARREE];let n=e[3];null!=r&&null!=t&&(n=a(e[1],e[2],e[3],c.radius)),R(e,0,l,0),l[3]=n}return!0}function a(e,r,t,n){const o=n+r;if(o<n/2||t>o)return Number.MAX_VALUE;const s=Math.abs(f*e)+Math.asin(t/o);return s>=Math.PI/2?Number.MAX_VALUE:t/Math.cos(s)}const u=r(),f=e(1);export{l as projectBoundingSphere};