UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 1.74 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */ import{clamp as t}from"../../../../core/mathUtils.js";import{copy as e,scale as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{wrap as i}from"../../../../geometry/support/ray.js";import{defaultConstraintOptions as o,interactionDirectionTowardsConstraintMinimization as s,hasConstraintType as a,adjustRangeForInteraction as c}from"./common.js";import{closestPointOnRay as m}from"../../support/intersectionUtils.js";function u(t,r,n=o){const a=l(t,r,n);if(0===a)return!1;const c=t.renderCoordsHelper,u=c.getAltitude(r.eye)+a,f=s(r,n.interactionDirection,p(t,r,Math.sign(a),j),g),d=e(A,r.viewForward),y=c.intersectInfiniteManifold(i(r.eye,f),u,C);return r.eye=null!=y?y:c.setAltitude(C,u,r.eye),r.center=m(C,r.eye,d,r.center),!0}function l(e,r,n=o){if(!f(e,n)||!e.state.constraints.altitude)return 0;const i=y(e.state.constraints.altitude,x);d(e,n,i);const s=e.renderCoordsHelper.getAltitude(r.eye),a=t(s,i.min,i.max)-s;return Math.abs(a)<=1e-6?0:a}function f(t,e){const r=t.state.constraints.altitude;return!(!t.state.isGlobal||!r)&&(2!==e.interactionType||!a(e.selection,1))}function d(t,e,r){const n=e.interactionType;if(0===n)return;const{min:i,max:o}=r,{interactionStartCamera:s,interactionFactor:a}=e;if(!s)return;const m=2===n||1===n,u=l(t,s),f=0===u?0:t.renderCoordsHelper.getAltitude(s.eye);r.min=i,r.max=o;c(u,f,m,a,.05*f,r)}function p(t,e,n,i){return t.renderCoordsHelper.worldUpAtPosition(e.eye,i),r(i,i,n),i}function y(t,e){return e.min=t.min,e.max=t.max,e}const x={min:0,max:0},g=n(),j=n(),A=n(),C=n();export{u as applyAltitudeConstraint,l as getAltitudeConstraintError};