12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import"../core/has.js";import s from"../core/Logger.js";import{acosClamped as t}from"../core/mathUtils.js";import{ObjectStack as i}from"../core/ObjectStack.js";import{a as n,t as o,d as r}from"./mat4.js";import{c as e}from"./mat4f64.js";import{c as a,g as c,a as u,s as g,i as b,l as f,r as p,e as l,b as m,k as d,m as h,n as j,p as I}from"./vec3.js";import{f as y,c as P,a as v}from"./vec3f64.js";import{Axis as N}from"../geometry/support/Axis.js";import{create as w,projectPointClamp as M,distance2 as S}from"../geometry/support/lineSegment.js";import{create as T,wrap as A,copy as x,fromVectorsAndPoint as V,fromValues as _,intersectRay as O,intersectLineSegment as k,intersectLineSegmentClamp as E,isPointInside as U,projectPoint as Y,normal as q,setOffsetFromPoint as B}from"../geometry/support/plane.js";import{distance2 as F}from"../geometry/support/ray.js";import{projectPointSignedLength as R}from"../geometry/support/vector.js";import{sv3d as C}from"../geometry/support/vectorStacks.js";const L=s.getLogger("esri.views.3d.support.geometryUtils.boundedPlane");class z{constructor(){this.plane=T(),this.origin=P(),this.basis1=P(),this.basis2=P()}}function G(s=vs){return{plane:T(s.plane),origin:v(s.origin),basis1:v(s.basis1),basis2:v(s.basis2)}}function W(s,t,i){const n=Ss.get();return n.origin=s,n.basis1=t,n.basis2=i,n.plane=A(0,0,0,0),H(n),n}function X(s,t=G()){return D(s.origin,s.basis1,s.basis2,t)}function Z(s,t){a(t.origin,s.origin),a(t.basis1,s.basis1),a(t.basis2,s.basis2),x(t.plane,s.plane)}function D(s,t,i,n=G()){return a(n.origin,s),a(n.basis1,t),a(n.basis2,i),H(n),ys(n,"fromValues()"),n}function H(s){V(s.basis2,s.basis1,s.origin,s.plane)}function J(s,t,i){s!==i&&X(s,i);const n=c(C.get(),ms(s),t);return u(i.origin,i.origin,n),i.plane[3]-=t,i}function K(s,t,i){return Q(t,i),J(i,gs(s,s.origin),i),i}function Q(s,t=G()){const i=(s[2]-s[0])/2,n=(s[3]-s[1])/2;return g(t.origin,s[0]+i,s[1]+n,0),g(t.basis1,i,0,0),g(t.basis2,0,n,0),_(0,0,1,0,t.plane),t}function $(s,t,i){return!!O(s.plane,t,i)&&hs(s,i)}function ss(s,t,i){if($(s,t,i))return i;const n=ts(s,t,C.get());return u(i,t.origin,c(C.get(),t.direction,b(t.origin,n)/f(t.direction))),i}function ts(s,i,n){const o=Ns.get();Ps(s,i,o,Ns.get());let r=Number.POSITIVE_INFINITY;for(const e of Ts){const c=Is(s,e,ws.get()),u=C.get();if(k(o,c,u)){const s=p(C.get(),i.origin,u),o=Math.abs(t(l(i.direction,s)));o<r&&(r=o,a(n,u))}}return r===Number.POSITIVE_INFINITY?is(s,i,n):n}function is(s,t,i){if($(s,t,i))return i;const n=Ns.get(),o=Ns.get();Ps(s,t,n,o);let r=Number.POSITIVE_INFINITY;for(const e of Ts){const c=Is(s,e,ws.get()),u=C.get();if(E(n,c,u)){const s=F(t,u);if(!U(o,u))continue;s<r&&(r=s,a(i,u))}}return rs(s,t.origin)<r&&ns(s,t.origin,i),i}function ns(s,t,i){const n=Y(s.plane,t,C.get()),o=M(js(s,s.basis1),n,-1,1,C.get()),r=M(js(s,s.basis2),n,-1,1,C.get());return m(i,u(C.get(),o,r),s.origin),i}function os(s,t,i){const{origin:n,basis1:o,basis2:r}=s,e=m(C.get(),t,n),a=R(o,e),c=R(r,e),u=R(ms(s),e);return g(i,a,c,u)}function rs(s,t){const i=os(s,t,C.get()),{basis1:n,basis2:o}=s,r=f(n),e=f(o),a=Math.max(Math.abs(i[0])-r,0),c=Math.max(Math.abs(i[1])-e,0),u=i[2];return a*a+c*c+u*u}function es(s,t){return Math.sqrt(rs(s,t))}function as(s,t){let i=Number.NEGATIVE_INFINITY;for(const n of Ts){const o=Is(s,n,ws.get()),r=S(o,t);r>i&&(i=r)}return Math.sqrt(i)}function cs(s,t){return U(s.plane,t)&&hs(s,t)}function us(s,t,i,n){return ds(s,i,n)}function gs(s,t){const i=-s.plane[3];return R(ms(s),t)-i}function bs(s,t,i,n){const o=gs(s,t),r=c(Ms,ms(s),i-o);return u(n,t,r),n}function fs(s,t){return d(s.basis1,t.basis1)&&d(s.basis2,t.basis2)&&d(s.origin,t.origin)}function ps(s,t,i){return s!==i&&X(s,i),n(As,t),o(As,As),h(i.basis1,s.basis1,As),h(i.basis2,s.basis2,As),h(q(i.plane),q(s.plane),As),h(i.origin,s.origin,t),B(i.plane,i.plane,i.origin),i}function ls(s,t,i,n){return s!==n&&X(s,n),r(xs,t,i),h(n.basis1,s.basis1,xs),h(n.basis2,s.basis2,xs),H(n),n}function ms(s){return q(s.plane)}function ds(s,t,i){switch(t){case N.X:a(i,s.basis1),j(i,i);break;case N.Y:a(i,s.basis2),j(i,i);break;case N.Z:a(i,ms(s))}return i}function hs(s,t){const i=m(C.get(),t,s.origin),n=I(s.basis1),o=I(s.basis2),r=l(s.basis1,i),e=l(s.basis2,i);return-r-n<0&&r-n<0&&-e-o<0&&e-o<0}function js(s,t){const i=ws.get();return a(i.origin,s.origin),a(i.vector,t),i}function Is(s,t,i){const{basis1:n,basis2:o,origin:r}=s,e=c(C.get(),n,t.origin[0]),a=c(C.get(),o,t.origin[1]);u(i.origin,e,a),u(i.origin,i.origin,r);const g=c(C.get(),n,t.direction[0]),b=c(C.get(),o,t.direction[1]);return c(i.vector,u(g,g,b),2),i}function ys(s,t){Math.abs(l(s.basis1,s.basis2)/(f(s.basis1)*f(s.basis2)))>1e-6&&L.warn(t,"Provided basis vectors are not perpendicular"),Math.abs(l(s.basis1,ms(s)))>1e-6&&L.warn(t,"Basis vectors and plane normal are not perpendicular"),Math.abs(-l(ms(s),s.origin)-s.plane[3])>1e-6&&L.warn(t,"Plane offset is not consistent with plane origin")}function Ps(s,t,i,n){const o=ms(s);V(o,t.direction,t.origin,i),V(q(i),o,t.origin,n)}const vs={plane:T(),origin:y(0,0,0),basis1:y(1,0,0),basis2:y(0,1,0)},Ns=new i(T),ws=new i(w),Ms=P(),Ss=new i((()=>G())),Ts=[{origin:[-1,-1],direction:[1,0]},{origin:[1,-1],direction:[0,1]},{origin:[1,1],direction:[-1,0]},{origin:[-1,1],direction:[0,-1]}],As=e(),xs=e(),Vs=Object.freeze(Object.defineProperty({__proto__:null,BoundedPlaneClass:z,create:G,wrap:W,copy:X,copyWithoutVerify:Z,fromValues:D,updateUnboundedPlane:H,elevate:J,setExtent:K,fromAABoundingRect:Q,intersectRay:$,intersectRayClosestSilhouette:ss,closestPointOnSilhouette:ts,closestPoint:is,projectPoint:ns,projectPointLocal:os,distance2:rs,distance:es,distanceToSilhouette:as,extrusionContainsPoint:cs,axisAt:us,altitudeAt:gs,setAltitudeAt:bs,equals:fs,transform:ps,rotate:ls,normal:ms,UP:vs},Symbol.toStringTag,{value:"Module"}));export{bs as A,z as B,vs as U,G as a,Vs as b,X as c,fs as d,cs as e,D as f,Q as g,es as h,$ as i,Z as j,J as k,ss as l,ts as m,ms as n,is as o,ns as p,os as q,ls as r,K as s,ps as t,H as u,rs as v,W as w,as as x,us as y,gs as z};
|