UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 4.38 kB
/* 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 n,p as r,d as o,n as c,f as e,i as u,e as I,h as i,g as f}from"../../chunks/vec32.js";import{create as s}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{a as N,e as E}from"../../chunks/vec42.js";import{projectPointSignedLength as a}from"./vector.js";import{sv4d as T,sv3d as S}from"./vectorStacks.js";import{tangentFrame as _}from"../../views/3d/support/mathUtils.js";function M(t=$){return[t[0],t[1],t[2],t[3]]}const m=N,g=E;function D(t=$[0],n=$[1],r=$[2],o=$[3]){return U(t,n,r,o,T.get())}function h(t,n){return U(n[0],n[1],n[2],n[3],t)}function O(t){return t}function U(t,n,r,o,c=M()){return c[0]=t,c[1]=n,c[2]=r,c[3]=o,c}function C(t,r,o){return n(o,t),o[3]=r,o}function l(t,n,r){const o=n[0]*n[0]+n[1]*n[1]+n[2]*n[2],c=Math.abs(o-1)>1e-5&&o>1e-12?1/Math.sqrt(o):1;return r[0]=n[0]*c,r[1]=n[1]*c,r[2]=n[2]*c,r[3]=-(r[0]*t[0]+r[1]*t[1]+r[2]*t[2]),r}function p(t,n,r,o=M()){const c=r[0]-n[0],e=r[1]-n[1],u=r[2]-n[2],I=t[0]-n[0],i=t[1]-n[1],f=t[2]-n[2],s=e*f-u*i,N=u*I-c*f,E=c*i-e*I,a=s*s+N*N+E*E,T=Math.abs(a-1)>1e-5&&a>1e-12?1/Math.sqrt(a):1;return o[0]=s*T,o[1]=N*T,o[2]=E*T,o[3]=-(o[0]*t[0]+o[1]*t[1]+o[2]*t[2]),o}function v(t,n,u,I=0,i=Math.floor(u*(1/3)),f=Math.floor(u*(2/3))){if(u<3)return!1;n(R,I);let s=i,N=!1;for(;s<u-1&&!N;)n(j,s),s++,N=!r(R,j);if(!N)return!1;for(s=Math.max(s,f),N=!1;s<u&&!N;)n(b,s),s++,o(d,R,j),c(d,d),o(X,j,b),c(X,X),N=!r(R,b)&&!r(j,b)&&Math.abs(e(d,X))<F;return N?(p(R,j,b,t),!0):(0!==I||1!==i||2!==f)&&v(t,n,u,0,1,2)}function A(t,n,r=!0){const o=n.length/3;return v(t,((t,r)=>u(t,n[3*r+0],n[3*r+1],n[3*r+2])),r?o-1:o)}const F=.99619469809,R=s(),j=s(),b=s(),d=s(),X=s();function y(t,n,r){return n!==t&&h(t,n),t[3]=-e(O(t),r),t}function L(t,n){return n[0]=-t[0],n[1]=-t[1],n[2]=-t[2],n[3]=-t[3],n}function P(t,n,r,o){return I(b,n,t),l(r,b,o)}function k(t,n,r,c){return Y(Z(t,n,o(S.get(),r,n),nt,c))}function x(t,n,r){return null!=n&&Y(Z(t,n.origin,n.direction,rt,r))}function q(t,n,r){return Y(Z(t,n.origin,n.vector,tt.NONE,r))}function w(t,n,r){return Y(Z(t,n.origin,n.vector,tt.CLAMP,r))}function z(t,n){return V(t,n)>=0}function B(t,n){const r=e(O(t),n.ray.direction),o=-V(t,n.ray.origin);if(o<0&&r>=0)return!1;if(r>-1e-6&&r<1e-6)return o>0;if((o<0||r<0)&&!(o<0&&r<0))return!0;const c=o/r;return r>0?c<n.c1&&(n.c1=c):c>n.c0&&(n.c0=c),n.c0<=n.c1}function G(t,n){const r=e(O(t),n.ray.direction),o=-V(t,n.ray.origin);if(r>-1e-6&&r<1e-6)return o>0;const c=o/r;return r>0?c<n.c1&&(n.c1=c):c>n.c0&&(n.c0=c),n.c0<=n.c1}function H(t,n,r){const c=i(S.get(),O(t),-t[3]),e=K(t,o(S.get(),n,c),S.get());return f(r,e,c),r}function J(t,n,r,c){const e=O(t),I=S.get(),i=S.get();_(e,I,i);const f=o(S.get(),r,n),s=a(I,f),N=a(i,f),E=a(e,f);return u(c,s,N,E)}function K(t,n,r){const c=i(S.get(),O(t),e(O(t),n));return o(r,n,c),r}function Q(t,n){return Math.abs(V(t,n))}function V(t,n){return e(O(t),n)+t[3]}var W;function Y(t){return t===W.INTERSECTS_INSIDE_OUT||t===W.INTERSECTS_OUTSIDE_IN}function Z(n,r,o,c,u){const I=e(O(n),o),s=V(n,r);if(0===I)return s>=0?W.INSIDE:W.OUTSIDE;let N=-s/I;return c&tt.CLAMP&&(N=t(N,0,1)),!(c&tt.INFINITE_MIN)&&N<0||!(c&tt.INFINITE_MAX)&&N>1?s>=0?W.INSIDE:W.OUTSIDE:(f(u,r,i(u,o,N)),s>=0?W.INTERSECTS_INSIDE_OUT:W.INTERSECTS_OUTSIDE_IN)}!function(t){t[t.INTERSECTS_INSIDE_OUT=0]="INTERSECTS_INSIDE_OUT",t[t.INTERSECTS_OUTSIDE_IN=1]="INTERSECTS_OUTSIDE_IN",t[t.INSIDE=2]="INSIDE",t[t.OUTSIDE=3]="OUTSIDE"}(W||(W={}));const $=[0,0,1,0];var tt;!function(t){t[t.NONE=0]="NONE",t[t.CLAMP=1]="CLAMP",t[t.INFINITE_MIN=4]="INFINITE_MIN",t[t.INFINITE_MAX=8]="INFINITE_MAX"}(tt||(tt={}));const nt=tt.INFINITE_MIN|tt.INFINITE_MAX,rt=tt.INFINITE_MAX;export{tt as IntersectFlags,W as IntersectResult,B as clip,G as clipInfinite,h as copy,M as create,Q as distance,g as equals,m as exactEquals,A as fromArray,v as fromManyPoints,C as fromNormalAndOffset,p as fromPoints,l as fromPositionAndNormal,U as fromValues,P as fromVectorsAndPoint,O as getNormal,k as intersectLine,Z as intersectLineOrRay,q as intersectLineSegment,w as intersectLineSegmentClamp,x as intersectRay,z as isPointInside,L as negate,H as projectPoint,J as projectPointLocal,K as projectVector,y as setOffsetFromPoint,V as signedDistance,$ as up,D as wrap};