You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
6.2 KiB
JavaScript
2 lines
6.2 KiB
JavaScript
define(["exports","./Cartesian2-8417ca3d","./Transforms-a73b3b3b","./EllipsoidTangentPlane-9123a53b","./Math-4e53b694","./PolylinePipeline-28f5feec"],function(a,O,p,m,N,V){"use strict";var G=Object.freeze({ROUNDED:0,MITERED:1,BEVELED:2}),R=[new O.Cartesian3,new O.Cartesian3],I=new O.Cartesian3,L=new O.Cartesian3,j=new O.Cartesian3,Q=new O.Cartesian3,F=new O.Cartesian3,U=new O.Cartesian3,_=new O.Cartesian3,q=new O.Cartesian3,Y=new O.Cartesian3,Z=new O.Cartesian3,g=new O.Cartesian3,k={},H=new O.Cartographic;function J(a,e,r,n){var t=a[0],a=a[1],a=O.Cartesian3.angleBetween(t,a),i=Math.ceil(a/n),s=new Array(i);if(e===r){for(l=0;l<i;l++)s[l]=e;return s.push(r),s}for(var o=(r-e)/i,l=1;l<i;l++)s[l]=e+l*o;return s[0]=e,s.push(r),s}var d=new O.Cartesian3,f=new O.Cartesian3;var w=new O.Cartesian3(-1,0,0),h=new p.Matrix4,v=new p.Matrix4,x=new p.Matrix3,P=p.Matrix3.IDENTITY.clone(),E=new O.Cartesian3,M=new p.Cartesian4,T=new O.Cartesian3;function K(a,e,r,n,t,i,s,o){var l=E,C=M;h=p.Transforms.eastNorthUpToFixedFrame(a,t,h),l=p.Matrix4.multiplyByPointAsVector(h,w,l);var l=O.Cartesian3.normalize(l,l),e=(l=l,e=e,a=a,t=t,t=new m.EllipsoidTangentPlane(a,t),l=t.projectPointOntoPlane(O.Cartesian3.add(a,l,d),d),a=t.projectPointOntoPlane(O.Cartesian3.add(a,e,f),f),e=O.Cartesian2.angleBetween(l,a),0<=a.x*l.y-a.y*l.x?-e:e);x=p.Matrix3.fromRotationZ(e,x),T.z=i,h=p.Matrix4.multiplyTransformation(h,p.Matrix4.fromRotationTranslation(x,T,v),h);var c=P;c[0]=s;for(var u=0;u<o;u++)for(var y=0;y<r.length;y+=3)C=O.Cartesian3.fromArray(r,y,C),C=p.Matrix3.multiplyByVector(c,C,C),C=p.Matrix4.multiplyByPoint(h,C,C),n.push(C.x,C.y,C.z);return n}var l=new O.Cartesian3;function W(a,e,r,n,t,i,s){for(var o=0;o<a.length;o+=3)n=K(O.Cartesian3.fromArray(a,o,l),e,r,n,t,i[o/3],s,1);return n}function X(a,e){for(var r=a.length,n=new Array(3*r),t=0,i=e.x+e.width/2,s=e.y+e.height/2,o=0;o<r;o++)n[t++]=a[o].x-i,n[t++]=0,n[t++]=a[o].y-s;return n}var B=new p.Quaternion,b=new O.Cartesian3,z=new p.Matrix3;function $(a,e,r,n,t,i,s,o,l,C){var c,u=O.Cartesian3.angleBetween(O.Cartesian3.subtract(e,a,Z),O.Cartesian3.subtract(r,a,g)),y=n===G.BEVELED?0:Math.ceil(u/N.CesiumMath.toRadians(5)),m=t?p.Matrix3.fromQuaternion(p.Quaternion.fromAxisAngle(O.Cartesian3.negate(a,Z),u/(y+1),B),z):p.Matrix3.fromQuaternion(p.Quaternion.fromAxisAngle(a,u/(y+1),B),z);if(e=O.Cartesian3.clone(e,b),0<y)for(var d=C?2:1,f=0;f<y;f++)e=p.Matrix3.multiplyByVector(m,e,e),c=O.Cartesian3.subtract(e,a,Z),c=O.Cartesian3.normalize(c,c),t||(c=O.Cartesian3.negate(c,c)),s=K(i.scaleToGeodeticSurface(e,g),c,o,s,i,l,1,d);else c=O.Cartesian3.subtract(e,a,Z),c=O.Cartesian3.normalize(c,c),t||(c=O.Cartesian3.negate(c,c)),s=K(i.scaleToGeodeticSurface(e,g),c,o,s,i,l,1,1),r=O.Cartesian3.clone(r,b),c=O.Cartesian3.subtract(r,a,Z),c=O.Cartesian3.normalize(c,c),t||(c=O.Cartesian3.negate(c,c)),s=K(i.scaleToGeodeticSurface(r,g),c,o,s,i,l,1,1);return s}k.removeDuplicatesFromShape=function(a){for(var e=a.length,r=[],n=e-1,t=0;t<e;n=t++){var i=a[n],s=a[t];O.Cartesian2.equals(i,s)||r.push(s)}return r},k.angleIsGreaterThanPi=function(a,e,r,n){n=new m.EllipsoidTangentPlane(r,n),a=n.projectPointOntoPlane(O.Cartesian3.add(r,a,d),d),e=n.projectPointOntoPlane(O.Cartesian3.add(r,e,f),f);return 0<=e.x*a.y-e.y*a.x};var aa=new O.Cartesian3,ea=new O.Cartesian3;k.computePositions=function(a,e,r,n,t){var i=n._ellipsoid,s=function(a,e){for(var r=new Array(a.length),n=0;n<a.length;n++){var t=a[n];H=e.cartesianToCartographic(t,H),r[n]=H.height,a[n]=e.scaleToGeodeticSurface(t,t)}return r}(a,i),o=n._granularity,l=n._cornerType,C=(t?function(a,e){var r=a.length,n=new Array(6*r),t=0,i=e.x+e.width/2,s=e.y+e.height/2,o=a[0];n[t++]=o.x-i,n[t++]=0,n[t++]=o.y-s;for(var l=1;l<r;l++){var C=(o=a[l]).x-i,c=o.y-s;n[t++]=C,n[t++]=0,n[t++]=c,n[t++]=C,n[t++]=0,n[t++]=c}return o=a[0],n[t++]=o.x-i,n[t++]=0,n[t++]=o.y-s,n}:X)(e,r),e=t?X(e,r):void 0,c=r.height/2,u=r.width/2,y=a.length,m=[],r=t?[]:void 0,d=I,f=L,p=j,g=F,w=U,h=_,v=q,x=Y,P=a[0],E=a[1];S=i.geodeticSurfaceNormal(P,S=Q),d=O.Cartesian3.subtract(E,P,d),d=O.Cartesian3.normalize(d,d),v=O.Cartesian3.cross(S,d,v);var M,v=O.Cartesian3.normalize(v,v),T=s[0],B=s[1];t&&(r=K(P,v,e,r,i,T+c,1,1)),x=O.Cartesian3.clone(P,x),P=E,f=O.Cartesian3.negate(d,f);for(var b=1;b<y-1;b++){var z=t?2:1,E=a[b+1],d=O.Cartesian3.subtract(E,P,d);d=O.Cartesian3.normalize(d,d),p=O.Cartesian3.add(d,f,p),p=O.Cartesian3.normalize(p,p);var S=i.geodeticSurfaceNormal(P,S),A=O.Cartesian3.multiplyByScalar(S,O.Cartesian3.dot(d,S),aa);O.Cartesian3.subtract(d,A,A),O.Cartesian3.normalize(A,A);var D=O.Cartesian3.multiplyByScalar(S,O.Cartesian3.dot(f,S),ea);O.Cartesian3.subtract(f,D,D),O.Cartesian3.normalize(D,D),!N.CesiumMath.equalsEpsilon(Math.abs(O.Cartesian3.dot(A,D)),1,N.CesiumMath.EPSILON7)?(p=O.Cartesian3.cross(p,S,p),p=O.Cartesian3.cross(S,p,p),p=O.Cartesian3.normalize(p,p),A=1/Math.max(.25,O.Cartesian3.magnitude(O.Cartesian3.cross(p,f,Z))),(D=k.angleIsGreaterThanPi(d,f,P,i))?(g=O.Cartesian3.add(P,O.Cartesian3.multiplyByScalar(p,A*u,p),g),w=O.Cartesian3.add(g,O.Cartesian3.multiplyByScalar(v,u,w),w),R[0]=O.Cartesian3.clone(x,R[0]),R[1]=O.Cartesian3.clone(w,R[1]),M=J(R,T+c,B+c,o),m=W(V.PolylinePipeline.generateArc({positions:R,granularity:o,ellipsoid:i}),v,C,m,i,M,1),v=O.Cartesian3.cross(S,d,v),v=O.Cartesian3.normalize(v,v),h=O.Cartesian3.add(g,O.Cartesian3.multiplyByScalar(v,u,h),h),l===G.ROUNDED||l===G.BEVELED?$(g,w,h,l,D,i,m,C,B+c,t):m=K(P,p=O.Cartesian3.negate(p,p),C,m,i,B+c,A,z)):(g=O.Cartesian3.add(P,O.Cartesian3.multiplyByScalar(p,A*u,p),g),w=O.Cartesian3.add(g,O.Cartesian3.multiplyByScalar(v,-u,w),w),R[0]=O.Cartesian3.clone(x,R[0]),R[1]=O.Cartesian3.clone(w,R[1]),M=J(R,T+c,B+c,o),m=W(V.PolylinePipeline.generateArc({positions:R,granularity:o,ellipsoid:i}),v,C,m,i,M,1),v=O.Cartesian3.cross(S,d,v),v=O.Cartesian3.normalize(v,v),h=O.Cartesian3.add(g,O.Cartesian3.multiplyByScalar(v,-u,h),h),l===G.ROUNDED||l===G.BEVELED?$(g,w,h,l,D,i,m,C,B+c,t):m=K(P,p,C,m,i,B+c,A,z)),x=O.Cartesian3.clone(h,x),f=O.Cartesian3.negate(d,f)):(m=K(x,v,C,m,i,T+c,1,1),x=P),T=B,B=s[b+1],P=E}R[0]=O.Cartesian3.clone(x,R[0]),R[1]=O.Cartesian3.clone(P,R[1]),M=J(R,T+c,B+c,o),m=W(V.PolylinePipeline.generateArc({positions:R,granularity:o,ellipsoid:i}),v,C,m,i,M,1),t&&(r=K(P,v,e,r,i,B+c,1,1));y=m.length,e=t?y+r.length:y,e=new Float64Array(e);return e.set(m),t&&e.set(r,y),e},a.CornerType=G,a.PolylineVolumeGeometryLibrary=k});
|