@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.94 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{clamp as t}from"../../../../core/mathUtils.js";import{c as e,h as r}from"../../../../chunks/vec32.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{wrap as o}from"../../../../geometry/support/ray.js";import{interactionDirectionTowardsConstraintMinimization as i,defaultConstraintOptions as s,hasConstraintType as a,adjustRangeForInteraction as c}from"./common.js";import{ConstraintTypes as m}from"./ConstraintTypes.js";import{InteractionType as u}from"./InteractionType.js";import{closestPointOnRay as f}from"../../support/intersectionUtils.js";function l(t,r,n=s){const a=p(t,r,n);if(0===a)return!1;const c=t.renderCoordsHelper,m=c.getAltitude(r.eye)+a,u=i(r,n.interactionDirection,j(t,r,Math.sign(a),C),g),l=e(M,r.viewForward),d=c.intersectInfiniteManifold(o(r.eye,u),m,h);return r.eye=null!=d?d:c.setAltitude(h,m,r.eye),r.center=f(h,r.eye,l,r.center),!0}function p(e,r,n=s){if(!d(e,n)||!e.state.constraints.altitude)return 0;const o=x(e.state.constraints.altitude,T);y(e,n,o);const i=e.renderCoordsHelper.getAltitude(r.eye),a=t(i,o.min,o.max)-i;return Math.abs(a)<=1e-6?0:a}function d(t,e){const r=t.state.constraints.altitude;return!(!t.state.isGlobal||!r)&&(e.interactionType!==u.TUMBLE||!a(e.selection,m.TILT))}function y(t,e,r){const n=e.interactionType;if(n===u.NONE)return;const{min:o,max:i}=r,{interactionStartCamera:s,interactionFactor:a}=e;if(!s)return;const m=n===u.TUMBLE||n===u.ZOOM,f=p(t,s),l=0===f?0:t.renderCoordsHelper.getAltitude(s.eye);r.min=o,r.max=i;c(f,l,m,a,.05*l,r)}function j(t,e,n,o){return t.renderCoordsHelper.worldUpAtPosition(e.eye,o),r(o,o,n),o}function x(t,e){return e.min=t.min,e.max=t.max,e}const T={min:0,max:0},g=n(),C=n(),M=n(),h=n();export{l as applyAltitudeConstraint,p as getAltitudeConstraintError};