1
lxl
2022-09-16 2d9ddf8269640309f22053d3c92a38fd77e84358
1
define(["exports","./Rectangle-82621db8","./when-54335d57","./Check-24483042","./EllipsoidGeodesic-2a3101f9","./EllipsoidRhumbLine-2550c0e1","./IntersectionTests-afc06c64","./Math-7a8129d6","./Transforms-b51fdb37","./Plane-fd9e13db"],function(a,w,P,e,r,v,m,T,y,A){"use strict";var b={numberOfPoints:function(a,e,r){var t=w.Cartesian3.distance(a,e);return Math.ceil(t/r)},numberOfPointsRhumbLine:function(a,e,r){var t=Math.pow(a.longitude-e.longitude,2)+Math.pow(a.latitude-e.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(t/(r*r))))}},o=new w.Cartographic;b.extractHeights=function(a,e){for(var r=a.length,t=new Array(r),n=0;n<r;n++){var i=a[n];t[n]=e.cartesianToCartographic(i,o).height}return t};var E=new y.Matrix4,R=new w.Cartesian3,M=new w.Cartesian3,S=new A.Plane(w.Cartesian3.UNIT_X,0),D=new w.Cartesian3,x=new A.Plane(w.Cartesian3.UNIT_X,0),N=new w.Cartesian3,G=new w.Cartesian3,I=[];function k(a,e,r){var t,n=I;if(n.length=a,e===r){for(t=0;t<a;t++)n[t]=e;return n}var i=(r-e)/a;for(t=0;t<a;t++){var o=e+t*i;n[t]=o}return n}var V=new w.Cartographic,L=new w.Cartographic,_=new w.Cartesian3,O=new w.Cartesian3,B=new w.Cartesian3,U=new r.EllipsoidGeodesic,z=new v.EllipsoidRhumbLine;function X(a,e,r,t,n,i,o,s){var c=t.scaleToGeodeticSurface(a,O),l=t.scaleToGeodeticSurface(e,B),u=b.numberOfPoints(a,e,r),h=t.cartesianToCartographic(c,V),f=t.cartesianToCartographic(l,L),g=k(u,n,i);U.setEndPoints(h,f);var C=U.surfaceDistance/u,d=s;h.height=n;var p=t.cartographicToCartesian(h,_);w.Cartesian3.pack(p,o,d),d+=3;for(var v=1;v<u;v++){var m=U.interpolateUsingSurfaceDistance(v*C,L);m.height=g[v],p=t.cartographicToCartesian(m,_),w.Cartesian3.pack(p,o,d),d+=3}return d}function q(a,e,r,t,n,i,o,s){var c=t.cartesianToCartographic(a,V),l=t.cartesianToCartographic(e,L),u=b.numberOfPointsRhumbLine(c,l,r);c.height=0,l.height=0;var h=k(u,n,i);z.ellipsoid.equals(t)||(z=new v.EllipsoidRhumbLine(void 0,void 0,t)),z.setEndPoints(c,l);var f=z.surfaceDistance/u,g=s;c.height=n;var C=t.cartographicToCartesian(c,_);w.Cartesian3.pack(C,o,g),g+=3;for(var d=1;d<u;d++){var p=z.interpolateUsingSurfaceDistance(d*f,L);p.height=h[d],C=t.cartographicToCartesian(p,_),w.Cartesian3.pack(C,o,g),g+=3}return g}b.wrapLongitude=function(a,e){var r=[],t=[];if(P.defined(a)&&0<a.length){e=P.defaultValue(e,y.Matrix4.IDENTITY);var n=y.Matrix4.inverseTransformation(e,E),i=y.Matrix4.multiplyByPoint(n,w.Cartesian3.ZERO,R),o=w.Cartesian3.normalize(y.Matrix4.multiplyByPointAsVector(n,w.Cartesian3.UNIT_Y,M),M),s=A.Plane.fromPointNormal(i,o,S),c=w.Cartesian3.normalize(y.Matrix4.multiplyByPointAsVector(n,w.Cartesian3.UNIT_X,D),D),l=A.Plane.fromPointNormal(i,c,x),u=1;r.push(w.Cartesian3.clone(a[0]));for(var h=r[0],f=a.length,g=1;g<f;++g){var C=a[g];if(A.Plane.getPointDistance(l,h)<0||A.Plane.getPointDistance(l,C)<0){var d=m.IntersectionTests.lineSegmentPlane(h,C,s,N);if(P.defined(d)){var p=w.Cartesian3.multiplyByScalar(o,5e-9,G);A.Plane.getPointDistance(s,h)<0&&w.Cartesian3.negate(p,p),r.push(w.Cartesian3.add(d,p,new w.Cartesian3)),t.push(u+1),w.Cartesian3.negate(p,p),r.push(w.Cartesian3.add(d,p,new w.Cartesian3)),u=1}}r.push(w.Cartesian3.clone(a[g])),u++,h=C}t.push(u)}return{positions:r,lengths:t}},b.generateArc=function(a){P.defined(a)||(a={});var e=a.positions,r=e.length,t=P.defaultValue(a.ellipsoid,w.Ellipsoid.WGS84),n=P.defaultValue(a.height,0),i=Array.isArray(n);if(r<1)return[];if(1===r){var o=t.scaleToGeodeticSurface(e[0],O);if(0!==(n=i?n[0]:n)){var s=t.geodeticSurfaceNormal(o,_);w.Cartesian3.multiplyByScalar(s,n,s),w.Cartesian3.add(o,s,o)}return[o.x,o.y,o.z]}var c=a.minDistance;if(!P.defined(c)){var l=P.defaultValue(a.granularity,T.CesiumMath.RADIANS_PER_DEGREE);c=T.CesiumMath.chordLength(l,t.maximumRadius)}var u,h=0;for(u=0;u<r-1;u++)h+=b.numberOfPoints(e[u],e[u+1],c);var f=3*(h+1),g=new Array(f),C=0;for(u=0;u<r-1;u++){C=X(e[u],e[u+1],c,t,i?n[u]:n,i?n[u+1]:n,g,C)}I.length=0;var d=e[r-1],p=t.cartesianToCartographic(d,V);p.height=i?n[r-1]:n;var v=t.cartographicToCartesian(p,_);return w.Cartesian3.pack(v,g,f-3),g};var W=new w.Cartographic,Y=new w.Cartographic;b.generateRhumbArc=function(a){P.defined(a)||(a={});var e=a.positions,r=e.length,t=P.defaultValue(a.ellipsoid,w.Ellipsoid.WGS84),n=P.defaultValue(a.height,0),i=Array.isArray(n);if(r<1)return[];if(1===r){var o=t.scaleToGeodeticSurface(e[0],O);if(0!==(n=i?n[0]:n)){var s=t.geodeticSurfaceNormal(o,_);w.Cartesian3.multiplyByScalar(s,n,s),w.Cartesian3.add(o,s,o)}return[o.x,o.y,o.z]}var c,l,u=P.defaultValue(a.granularity,T.CesiumMath.RADIANS_PER_DEGREE),h=0,f=t.cartesianToCartographic(e[0],W);for(c=0;c<r-1;c++)l=t.cartesianToCartographic(e[c+1],Y),h+=b.numberOfPointsRhumbLine(f,l,u),f=w.Cartographic.clone(l,W);var g=3*(h+1),C=new Array(g),d=0;for(c=0;c<r-1;c++){d=q(e[c],e[c+1],u,t,i?n[c]:n,i?n[c+1]:n,C,d)}I.length=0;var p=e[r-1],v=t.cartesianToCartographic(p,V);v.height=i?n[r-1]:n;var m=t.cartographicToCartesian(v,_);return w.Cartesian3.pack(m,C,g-3),C},b.generateCartesianArc=function(a){for(var e=b.generateArc(a),r=e.length/3,t=new Array(r),n=0;n<r;n++)t[n]=w.Cartesian3.unpack(e,3*n);return t},b.generateCartesianRhumbArc=function(a){for(var e=b.generateRhumbArc(a),r=e.length/3,t=new Array(r),n=0;n<r;n++)t[n]=w.Cartesian3.unpack(e,3*n);return t},a.PolylinePipeline=b});