define(["exports","./Matrix2-fc7e9822","./defaultValue-94c3e563","./RuntimeError-c581ca93","./Transforms-3ac41eb6","./ComponentDatatype-4a60b8d6"],(function(e,r,t,n,i,a){"use strict";const o={};function s(e,r,t){const n=e+r;return a.CesiumMath.sign(e)!==a.CesiumMath.sign(r)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(r)))n&&n/r0?[d/e,t/d]:[t/d,d/e]};const u={};function c(e,r,t,n){const i=e,a=r/3,o=t/3,s=n,u=i*o,c=a*s,d=a*a,l=o*o,f=i*o-d,h=i*s-a*o,m=a*s-l,p=4*f*m-h*h;let C,w;if(p<0){let e,r,t;d*c>=u*l?(e=i,r=f,t=-2*a*f+i*h):(e=s,r=m,t=-s*h+2*o*m);const n=t<0?-1:1,M=-n*Math.abs(e)*Math.sqrt(-p);w=-t+M;const b=w/2,g=b<0?-Math.pow(-b,1/3):Math.pow(b,1/3),q=w===M?-g:-r/g;return C=r<=0?g+q:-t/(g*g+q*q+r),d*c>=u*l?[(C-a)/i]:[-s/(C+o)]}const M=f,b=-2*a*f+i*h,g=m,q=-s*h+2*o*m,E=Math.sqrt(p),y=Math.sqrt(3)/2;let v=Math.abs(Math.atan2(i*E,-b)/3);C=2*Math.sqrt(-M);let D=Math.cos(v);w=C*D;let R=C*(-D/2-y*Math.sin(v));const S=w+R>2*a?w-a:R-a,O=i,x=S/O;v=Math.abs(Math.atan2(s*E,-q)/3),C=2*Math.sqrt(-g),D=Math.cos(v),w=C*D,R=C*(-D/2-y*Math.sin(v));const P=-s,N=w+R<2*o?w+o:R+o,L=P/N,I=O*N,z=-S*N-O*P,T=S*P,U=(o*z-a*T)/(-a*z+o*I);return x<=U?x<=L?U<=L?[x,U,L]:[x,L,U]:[L,x,U]:x<=L?[U,x,L]:U<=L?[U,L,x]:[L,U,x]}u.computeDiscriminant=function(e,r,t,i){if("number"!==typeof e)throw new n.DeveloperError("a is a required number.");if("number"!==typeof r)throw new n.DeveloperError("b is a required number.");if("number"!==typeof t)throw new n.DeveloperError("c is a required number.");if("number"!==typeof i)throw new n.DeveloperError("d is a required number.");const a=e*e,o=r*r,s=t*t,u=i*i,c=18*e*r*t*i+o*s-27*a*u-4*(e*s*t+o*r*i);return c},u.computeRealRoots=function(e,r,t,i){if("number"!==typeof e)throw new n.DeveloperError("a is a required number.");if("number"!==typeof r)throw new n.DeveloperError("b is a required number.");if("number"!==typeof t)throw new n.DeveloperError("c is a required number.");if("number"!==typeof i)throw new n.DeveloperError("d is a required number.");let a,s;if(0===e)return o.computeRealRoots(r,t,i);if(0===r){if(0===t){if(0===i)return[0,0,0];s=-i/e;const r=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3);return[r,r,r]}return 0===i?(a=o.computeRealRoots(e,0,t),0===a.Length?[0]:[a[0],0,a[1]]):c(e,0,t,i)}return 0===t?0===i?(s=-r/e,s<0?[s,0,0]:[0,0,s]):c(e,r,0,i):0===i?(a=o.computeRealRoots(e,r,t),0===a.length?[0]:a[1]<=0?[a[0],a[1],0]:a[0]>=0?[0,a[0],a[1]]:[a[0],0,a[1]]):c(e,r,t,i)};const d={};function l(e,r,t,n){const i=e*e,s=r-3*i/8,c=t-r*e/2+i*e/8,d=n-t*e/4+r*i/16-3*i*i/256,l=u.computeRealRoots(1,2*s,s*s-4*d,-c*c);if(l.length>0){const r=-e/4,t=l[l.length-1];if(Math.abs(t)=0&&n>=0){const e=Math.sqrt(t),i=Math.sqrt(n);return[r-i,r-e,r+e,r+i]}if(t>=0&&n<0)return i=Math.sqrt(t),[r-i,r+i];if(t<0&&n>=0)return i=Math.sqrt(n),[r-i,r+i]}return[]}if(t>0){const e=Math.sqrt(t),n=(s+t-c/e)/2,i=(s+t+c/e)/2,a=o.computeRealRoots(1,e,n),u=o.computeRealRoots(1,-e,i);return 0!==a.length?(a[0]+=r,a[1]+=r,0!==u.length?(u[0]+=r,u[1]+=r,a[1]<=u[0]?[a[0],a[1],u[0],u[1]]:u[1]<=a[0]?[u[0],u[1],a[0],a[1]]:a[0]>=u[0]&&a[1]<=u[1]?[u[0],a[0],a[1],u[1]]:u[0]>=a[0]&&u[1]<=a[1]?[a[0],u[0],u[1],a[1]]:a[0]>u[0]&&a[0]0){const i=h[0],s=r-i,u=s*s,d=e/2,l=s/2,f=u-4*n,m=u+4*Math.abs(n),p=c-4*i,C=c+4*Math.abs(i);let w,M,b,g,q,E;if(i<0||f*C=v[0]&&y[1]<=v[1]?[v[0],y[0],y[1],v[1]]:v[0]>=y[0]&&v[1]<=y[1]?[y[0],v[0],v[1],y[1]]:y[0]>v[0]&&y[0]m)return;if(q=r.Cartesian3.cross(g,l,b),y=r.Cartesian3.dot(d,q),y<0||E+y>m)return;v=r.Cartesian3.dot(f,q)/m}else{if(Math.abs(m)1)return;if(q=r.Cartesian3.cross(g,l,b),y=r.Cartesian3.dot(d,q)*e,y<0||E+y>1)return;v=r.Cartesian3.dot(f,q)*e}return v},m.rayTriangle=function(e,n,i,a,o,s){const u=m.rayTriangleParametric(e,n,i,a,o);if(t.defined(u)&&!(u<0))return t.defined(s)||(s=new r.Cartesian3),r.Cartesian3.multiplyByScalar(e.direction,u,s),r.Cartesian3.add(e.origin,s,s)};const g=new h;function q(e,r,t,n){const i=r*r-4*e*t;if(i<0)return;if(i>0){const t=1/(2*e),a=Math.sqrt(i),o=(-r+a)*t,s=(-r-a)*t;return or.Cartesian3.distance(e,i)))return t.defined(c)||(c=new r.Cartesian3),r.Cartesian3.multiplyByScalar(d.direction,l,c),r.Cartesian3.add(d.origin,c,c)};const E={root0:0,root1:0};function y(e,n,a){t.defined(a)||(a=new i.Interval);const o=e.origin,s=e.direction,u=n.center,c=n.radius*n.radius,d=r.Cartesian3.subtract(o,u,w),l=r.Cartesian3.dot(s,s),f=2*r.Cartesian3.dot(s,d),h=r.Cartesian3.magnitudeSquared(d)-c,m=q(l,f,h,E);if(t.defined(m))return a.start=m.root0,a.stop=m.root1,a}m.raySphere=function(e,r,i){if(!t.defined(e))throw new n.DeveloperError("ray is required.");if(!t.defined(r))throw new n.DeveloperError("sphere is required.");if(i=y(e,r,i),t.defined(i)&&!(i.stop<0))return i.start=Math.max(i.start,0),i};const v=new h;m.lineSegmentSphere=function(e,i,a,o){if(!t.defined(e))throw new n.DeveloperError("p0 is required.");if(!t.defined(i))throw new n.DeveloperError("p1 is required.");if(!t.defined(a))throw new n.DeveloperError("sphere is required.");const s=v;r.Cartesian3.clone(e,s.origin);const u=r.Cartesian3.subtract(i,e,s.direction),c=r.Cartesian3.magnitude(u);if(r.Cartesian3.normalize(u,u),o=y(s,a,o),!(!t.defined(o)||o.stop<0||o.start>c))return o.start=Math.max(o.start,0),o.stop=Math.min(o.stop,c),o};const D=new r.Cartesian3,R=new r.Cartesian3;function S(e,r,t){const n=e+r;return a.CesiumMath.sign(e)!==a.CesiumMath.sign(r)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(r)))0?w.push(new r.Cartesian3(i,s*e,s*-u)):0!==u?(w.push(new r.Cartesian3(i,s*e,s*-u)),w.push(new r.Cartesian3(i,s*e,s*u)),++o):w.push(new r.Cartesian3(i,s*e,s*u))}return w}m.rayEllipsoid=function(e,a){if(!t.defined(e))throw new n.DeveloperError("ray is required.");if(!t.defined(a))throw new n.DeveloperError("ellipsoid is required.");const o=a.oneOverRadii,s=r.Cartesian3.multiplyComponents(o,e.origin,D),u=r.Cartesian3.multiplyComponents(o,e.direction,R),c=r.Cartesian3.magnitudeSquared(s),d=r.Cartesian3.dot(s,u);let l,f,h,m,p;if(c>1){if(d>=0)return;const e=d*d;if(l=c-1,f=r.Cartesian3.magnitudeSquared(u),h=f*l,eh){m=d*d-h,p=-d+Math.sqrt(m);const e=p/f,r=l/p;return e=0)return o}const u=t.defined(this.rayEllipsoid(e,i)),c=i.transformPositionToScaledSpace(s,x),d=r.Cartesian3.normalize(c,c),l=r.Cartesian3.mostOrthogonalAxis(c,L),f=r.Cartesian3.normalize(r.Cartesian3.cross(l,d,P),P),h=r.Cartesian3.normalize(r.Cartesian3.cross(d,f,N),N),m=z;m[0]=d.x,m[1]=d.y,m[2]=d.z,m[3]=f.x,m[4]=f.y,m[5]=f.z,m[6]=h.x,m[7]=h.y,m[8]=h.z;const p=r.Matrix3.transpose(m,T),C=r.Matrix3.fromScale(i.radii,U),w=r.Matrix3.fromScale(i.oneOverRadii,W),M=B;M[0]=0,M[1]=-s.z,M[2]=s.y,M[3]=s.z,M[4]=0,M[5]=-s.x,M[6]=-s.y,M[7]=s.x,M[8]=0;const b=r.Matrix3.multiply(r.Matrix3.multiply(p,w,V),M,V),g=r.Matrix3.multiply(r.Matrix3.multiply(b,C,Z),m,Z),q=r.Matrix3.multiplyByVector(b,o,I),E=O(g,r.Cartesian3.negate(q,x),0,0,1);let y,v;const D=E.length;if(D>0){let e=r.Cartesian3.clone(r.Cartesian3.ZERO,k),t=Number.NEGATIVE_INFINITY;for(let i=0;it&&(t=a,e=r.Cartesian3.clone(y,e))}const n=i.cartesianToCartographic(e,j);return t=a.CesiumMath.clamp(t,0,1),v=r.Cartesian3.magnitude(r.Cartesian3.subtract(e,o,L))*Math.sqrt(1-t*t),v=u?-v:v,n.height=v,i.cartographicToCartesian(n,new r.Cartesian3)}};const F=new r.Cartesian3;m.lineSegmentPlane=function(e,i,o,s){if(!t.defined(e))throw new n.DeveloperError("endPoint0 is required.");if(!t.defined(i))throw new n.DeveloperError("endPoint1 is required.");if(!t.defined(o))throw new n.DeveloperError("plane is required.");t.defined(s)||(s=new r.Cartesian3);const u=r.Cartesian3.subtract(i,e,F),c=o.normal,d=r.Cartesian3.dot(c,u);if(Math.abs(d)1?void 0:(r.Cartesian3.multiplyByScalar(u,f,s),r.Cartesian3.add(e,s,s),s)},m.trianglePlaneIntersection=function(e,i,a,o){if(!t.defined(e)||!t.defined(i)||!t.defined(a)||!t.defined(o))throw new n.DeveloperError("p0, p1, p2, and plane are required.");const s=o.normal,u=o.distance,c=r.Cartesian3.dot(s,e)+u<0,d=r.Cartesian3.dot(s,i)+u<0,l=r.Cartesian3.dot(s,a)+u<0;let f,h,p=0;if(p+=c?1:0,p+=d?1:0,p+=l?1:0,1!==p&&2!==p||(f=new r.Cartesian3,h=new r.Cartesian3),1===p){if(c)return m.lineSegmentPlane(e,i,o,f),m.lineSegmentPlane(e,a,o,h),{positions:[e,i,a,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(d)return m.lineSegmentPlane(i,a,o,f),m.lineSegmentPlane(i,e,o,h),{positions:[e,i,a,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(l)return m.lineSegmentPlane(a,e,o,f),m.lineSegmentPlane(a,i,o,h),{positions:[e,i,a,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===p){if(!c)return m.lineSegmentPlane(i,e,o,f),m.lineSegmentPlane(a,e,o,h),{positions:[e,i,a,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!d)return m.lineSegmentPlane(a,i,o,f),m.lineSegmentPlane(e,i,o,h),{positions:[e,i,a,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!l)return m.lineSegmentPlane(e,a,o,f),m.lineSegmentPlane(i,a,o,h),{positions:[e,i,a,f,h],indices:[0,1,4,0,4,3,2,3,4]}}},e.IntersectionTests=m,e.Ray=h}));