@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 1.27 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
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,projectionTable as s,wgs84ToWebMercator as c}from"./projectors.js";import{earth as i}from"../support/Ellipsoid.js";function o(e,r,o,l){if(null==e||null==r||null==l)return!1;const f=t(r,l);if(null==f?.projector)return!1;if(f.projector===n)return o.copyFrom(e),!0;const{source:p,dest:d,projector:m}=f;if(3===d.spatialReferenceId){const r=s[p.spatialReferenceId][2];return null!=r&&(r(e.center,0,u,0),c(u,0,o.center,0),o.radius=a(u[1],e.center[2],e.radius,i.radius),!0)}if(2!==p.spatialReferenceId&&5!==p.spatialReferenceId||11!==d.spatialReferenceId){m(e.center,0,o.center,0);const r=p.metersPerUnit??1,t=d.metersPerUnit??1;o.radius=e.radius*r/t}else{const r=s[p.spatialReferenceId][1],t=s[1][11];let n=e.radius;null!=r&&null!=t&&(n=a(e.center[1],e.center[2],e.radius,i.radius)),m(e.center,0,o.center,0),o.radius=n}return!0}function a(e,r,t,n){const s=n+r;if(s<n/2||t>s)return Number.MAX_VALUE;const c=Math.abs(l*e)+Math.asin(t/s);return c>=Math.PI/2?Number.MAX_VALUE:t/Math.cos(c)}const u=r(),l=e(1);export{o as projectBoundingSphere};