UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.67 kB
import{isSome as r}from"../../../../core/maybe.js";import{c as e,b as n,a as t,i as o,r as i}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{wrap as s}from"../../../../geometry/support/ray.js";import{i as a,k as f}from"../../../../chunks/sphere.js";import{defaultConstraintOptions as m,interactionDirectionTowardsConstraintMinimization as u,adjustRangeForInteraction as p}from"./common.js";import{InteractionType as d}from"./InteractionType.js";function y(r,e,n=m){if(!r.state.isLocal)return 0;const t=r.state.constraints.distance;if(!r.pointsOfInterest.surfaceOrigin.renderLocation||t===1/0)return 0;g.min=0,g.max=t,j(r,n,g);const o=L(r,e),i=g.max-o;return i>=-1e-6?0:i}function O(o,i,c=m){const p=y(o,i,c);if(0===p)return!1;const d=o.pointsOfInterest.surfaceOrigin;if(!d.renderLocation)return!1;const O=L(o,i)+p,j=e(l,i.eye),g=u(i,c.interactionDirection,x(i,d.renderLocation,k),h);if(!a(f(d.renderLocation,O),s(i.eye,g),C))return!1;i.eye=C;const N=n(I,i.eye,j);i.center=t(C,i.center,N);const b=o.renderCoordsHelper.getAltitude(i.center),v=o.renderCoordsHelper.intersectInfiniteManifold(i.ray,b,C);return r(v)&&(i.center=v),!0}function j(r,e,n){const t=e.interactionType;if(t===d.NONE)return;const{min:o,max:i}=n,{interactionStartCamera:c,interactionFactor:s}=e;if(!c)return;const a=t===d.ZOOM||t===d.PAN,f=y(r,c),m=0===f?0:L(r,c);n.min=o,n.max=i;p(f,m,a,s,.05*m,n)}function L(r,e){const n=r.pointsOfInterest.surfaceOrigin;return n.renderLocation?o(e.eye,n.renderLocation):0}function x(r,e,n){return i(n,r.eye,e)}const g={min:0,max:0},l=c(),I=c(),h=c(),k=c(),C=c();export{O as applyDistanceConstraint,y as getDistanceConstraintError};