// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../core/has ../core/Logger ../core/mathUtils ../core/ObjectStack ../core/libs/gl-matrix-2/math/mat4 ../core/libs/gl-matrix-2/factories/mat4f64 ./vec32 ../core/libs/gl-matrix-2/factories/vec3f64 ../geometry/support/Axis ../geometry/support/lineSegment ../geometry/support/plane ../geometry/support/ray ../geometry/support/vector ../geometry/support/vectorStacks".split(" "),function(f,F,la,ma,u,G,U,e,n,H,x,h,na,y,k){function r(a=I){return{plane:h.create(a.plane),origin:n.clone(a.origin), basis1:n.clone(a.basis1),basis2:n.clone(a.basis2)}}function V(a,b,c){const d=oa.get();d.origin=a;d.basis1=b;d.basis2=c;d.plane=h.wrap(0,0,0,0);v(d);return d}function w(a,b=r()){return J(a.origin,a.basis1,a.basis2,b)}function W(a,b){e.copy(b.origin,a.origin);e.copy(b.basis1,a.basis1);e.copy(b.basis2,a.basis2);h.copy(b.plane,a.plane)}function J(a,b,c,d=r()){e.copy(d.origin,a);e.copy(d.basis1,b);e.copy(d.basis2,c);v(d);1E-6c&&(c=d)}return Math.sqrt(c)}function ea(a,b){return h.isPointInside(a.plane,b)&&Y(a,b)}function fa(a,b,c,d){switch(c){case H.Axis.X:e.copy(d, a.basis1);e.normalize(d,d);break;case H.Axis.Y:e.copy(d,a.basis2);e.normalize(d,d);break;case H.Axis.Z:e.copy(d,p(a))}return d}function z(a,b){const c=-a.plane[3];return y.projectPointSignedLength(p(a),b)-c}function ha(a,b,c,d){const g=z(a,b);a=e.scale(pa,p(a),c-g);e.add(d,b,a);return d}function ia(a,b){return e.exactEquals(a.basis1,b.basis1)&&e.exactEquals(a.basis2,b.basis2)&&e.exactEquals(a.origin,b.origin)}function ja(a,b,c){a!==c&&w(a,c);G.invert(t,b);G.transpose(t,t);e.transformMat4(c.basis1, a.basis1,t);e.transformMat4(c.basis2,a.basis2,t);e.transformMat4(h.getNormal(c.plane),h.getNormal(a.plane),t);e.transformMat4(c.origin,a.origin,b);h.setOffsetFromPoint(c.plane,c.plane,c.origin);return c}function ka(a,b,c,d){a!==d&&w(a,d);G.fromRotation(T,b,c);e.transformMat4(d.basis1,a.basis1,T);e.transformMat4(d.basis2,a.basis2,T);v(d);return d}function p(a){return h.getNormal(a.plane)}function Y(a,b){const c=e.subtract(k.sv3d.get(),b,a.origin);b=e.squaredLength(a.basis1);const d=e.squaredLength(a.basis2), g=e.dot(a.basis1,c);a=e.dot(a.basis2,c);return 0>-g-b&&0>g-b&&0>-a-d&&0>a-d}function ba(a,b){const c=C.get();e.copy(c.origin,a.origin);e.copy(c.vector,b);return c}function P(a,b,c){const {basis1:d,basis2:g,origin:l}=a;a=e.scale(k.sv3d.get(),d,b.origin[0]);const m=e.scale(k.sv3d.get(),g,b.origin[1]);e.add(c.origin,a,m);e.add(c.origin,c.origin,l);a=e.scale(k.sv3d.get(),d,b.direction[0]);b=e.scale(k.sv3d.get(),g,b.direction[1]);e.scale(c.vector,e.add(a,a,b),2);return c}function aa(a,b,c,d){a=p(a);h.fromVectorsAndPoint(a, b.direction,b.origin,c);h.fromVectorsAndPoint(h.getNormal(c),a,b.origin,d)}const K=()=>la.getLogger("esri.views.3d.support.geometryUtils.boundedPlane");class qa{constructor(){this.plane=h.create();this.origin=n.create();this.basis1=n.create();this.basis2=n.create()}}F=qa;const I={plane:h.create(),origin:n.fromValues(0,0,0),basis1:n.fromValues(1,0,0),basis2:n.fromValues(0,1,0)},B=new u.ObjectStack(h.create),C=new u.ObjectStack(x.create),pa=n.create(),oa=new u.ObjectStack(()=>r()),O=[{origin:[-1,-1], direction:[1,0]},{origin:[1,-1],direction:[0,1]},{origin:[1,1],direction:[-1,0]},{origin:[-1,1],direction:[0,-1]}],t=U.create(),T=U.create();u=Object.freeze(Object.defineProperty({__proto__:null,BoundedPlaneClass:F,altitudeAt:z,axisAt:fa,closestPoint:Q,closestPointOnSilhouette:N,copy:w,copyWithoutVerify:W,create:r,distance:ca,distance2:E,distanceToSilhouette:da,elevate:L,equals:ia,extrusionContainsPoint:ea,fromAABoundingRect:M,fromValues:J,intersectRay:A,intersectRayClosestSilhouette:Z,normal:p,projectPoint:R, projectPointLocal:S,rotate:ka,setAltitudeAt:ha,setExtent:X,transform:ja,up:I,updateUnboundedPlane:v,wrap:V},Symbol.toStringTag,{value:"Module"}));f.BoundedPlaneClass=F;f.altitudeAt=z;f.axisAt=fa;f.boundedPlane=u;f.closestPoint=Q;f.closestPointOnSilhouette=N;f.copy=w;f.copyWithoutVerify=W;f.create=r;f.distance=ca;f.distance2=E;f.distanceToSilhouette=da;f.elevate=L;f.equals=ia;f.extrusionContainsPoint=ea;f.fromAABoundingRect=M;f.fromValues=J;f.intersectRay=A;f.intersectRayClosestSilhouette=Z;f.normal= p;f.projectPoint=R;f.projectPointLocal=S;f.rotate=ka;f.setAltitudeAt=ha;f.setExtent=X;f.transform=ja;f.up=I;f.updateUnboundedPlane=v;f.wrap=V});