2 lines
5.1 KiB
JavaScript
2 lines
5.1 KiB
JavaScript
define(["exports","./when-54c2dc71","./Check-6c0211bc","./Math-fc8cecf5","./Cartesian2-d1adddcb","./Transforms-ea828842","./IntersectionTests-43aa431f","./Plane-0cab2b36","./EllipsoidRhumbLine-8b165373","./EllipsoidGeodesic-a4f6440a"],function(a,T,e,w,P,v,m,y,A,r){"use strict";var b={numberOfPoints:function(a,e,r){var t=P.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.ceil(Math.sqrt(t/(r*r)))}},o=new P.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 v.Matrix4,S=new P.Cartesian3,R=new P.Cartesian3,M=new y.Plane(P.Cartesian3.UNIT_X,0),D=new P.Cartesian3,G=new y.Plane(P.Cartesian3.UNIT_X,0),x=new P.Cartesian3,N=new P.Cartesian3,I=[];function k(a,e,r){var t=I;if(t.length=a,e===r){for(i=0;i<a;i++)t[i]=e;return t}for(var n=(r-e)/a,i=0;i<a;i++){var o=e+i*n;t[i]=o}return t}var V=new P.Cartographic,L=new P.Cartographic,_=new P.Cartesian3,O=new P.Cartesian3,B=new P.Cartesian3,U=new r.EllipsoidGeodesic,z=new A.EllipsoidRhumbLine;b.wrapLongitude=function(a,e){var r=[],t=[];if(T.defined(a)&&0<a.length){e=T.defaultValue(e,v.Matrix4.IDENTITY);var n=v.Matrix4.inverseTransformation(e,E),i=v.Matrix4.multiplyByPoint(n,P.Cartesian3.ZERO,S),o=P.Cartesian3.normalize(v.Matrix4.multiplyByPointAsVector(n,P.Cartesian3.UNIT_Y,R),R),s=y.Plane.fromPointNormal(i,o,M),c=P.Cartesian3.normalize(v.Matrix4.multiplyByPointAsVector(n,P.Cartesian3.UNIT_X,D),D),l=y.Plane.fromPointNormal(i,c,G),u=1;r.push(P.Cartesian3.clone(a[0]));for(var h=r[0],f=a.length,C=1;C<f;++C){var g,d,p=a[C];(y.Plane.getPointDistance(l,h)<0||y.Plane.getPointDistance(l,p)<0)&&(g=m.IntersectionTests.lineSegmentPlane(h,p,s,x),T.defined(g)&&(d=P.Cartesian3.multiplyByScalar(o,5e-9,N),y.Plane.getPointDistance(s,h)<0&&P.Cartesian3.negate(d,d),r.push(P.Cartesian3.add(g,d,new P.Cartesian3)),t.push(u+1),P.Cartesian3.negate(d,d),r.push(P.Cartesian3.add(g,d,new P.Cartesian3)),u=1)),r.push(P.Cartesian3.clone(a[C])),u++,h=p}t.push(u)}return{positions:r,lengths:t}},b.generateArc=function(a){T.defined(a)||(a={});var e=a.positions,r=e.length,t=T.defaultValue(a.ellipsoid,P.Ellipsoid.WGS84),n=T.defaultValue(a.height,0),i=Array.isArray(n);if(r<1)return[];if(1===r){var o,s=t.scaleToGeodeticSurface(e[0],O);return 0!==(n=i?n[0]:n)&&(o=t.geodeticSurfaceNormal(s,_),P.Cartesian3.multiplyByScalar(o,n,o),P.Cartesian3.add(s,o,s)),[s.x,s.y,s.z]}var c,l=a.minDistance;T.defined(l)||(c=T.defaultValue(a.granularity,w.CesiumMath.RADIANS_PER_DEGREE),l=w.CesiumMath.chordLength(c,t.maximumRadius));for(var u=0,h=0;h<r-1;h++)u+=b.numberOfPoints(e[h],e[h+1],l);var f=3*(u+1),C=new Array(f),g=0;for(h=0;h<r-1;h++)g=function(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),C=k(u,n,i);U.setEndPoints(h,f);var g=U.surfaceDistance/u,d=s;h.height=n;var p=t.cartographicToCartesian(h,_);P.Cartesian3.pack(p,o,d),d+=3;for(var v=1;v<u;v++){var m=U.interpolateUsingSurfaceDistance(v*g,L);m.height=C[v],p=t.cartographicToCartesian(m,_),P.Cartesian3.pack(p,o,d),d+=3}return d}(e[h],e[h+1],l,t,i?n[h]:n,i?n[h+1]:n,C,g);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 P.Cartesian3.pack(v,C,f-3),C};var X=new P.Cartographic,q=new P.Cartographic;b.generateRhumbArc=function(a){T.defined(a)||(a={});var e=a.positions,r=e.length,t=T.defaultValue(a.ellipsoid,P.Ellipsoid.WGS84),n=T.defaultValue(a.height,0),i=Array.isArray(n);if(r<1)return[];if(1===r){var o,s=t.scaleToGeodeticSurface(e[0],O);return 0!==(n=i?n[0]:n)&&(o=t.geodeticSurfaceNormal(s,_),P.Cartesian3.multiplyByScalar(o,n,o),P.Cartesian3.add(s,o,s)),[s.x,s.y,s.z]}for(var c,l=T.defaultValue(a.granularity,w.CesiumMath.RADIANS_PER_DEGREE),u=0,h=t.cartesianToCartographic(e[0],X),f=0;f<r-1;f++)c=t.cartesianToCartographic(e[f+1],q),u+=b.numberOfPointsRhumbLine(h,c,l),h=P.Cartographic.clone(c,X);var C=3*(u+1),g=new Array(C),d=0;for(f=0;f<r-1;f++)d=function(a,e,r,t,n,i,o,s){var c=t.scaleToGeodeticSurface(a,O),l=t.scaleToGeodeticSurface(e,B),u=t.cartesianToCartographic(c,V),h=t.cartesianToCartographic(l,L),f=b.numberOfPointsRhumbLine(u,h,r),C=k(f,n,i);z.ellipsoid.equals(t)||(z=new A.EllipsoidRhumbLine(void 0,void 0,t)),z.setEndPoints(u,h);var g=z.surfaceDistance/f,d=s;u.height=n;var p=t.cartographicToCartesian(u,_);P.Cartesian3.pack(p,o,d),d+=3;for(var v=1;v<f;v++){var m=z.interpolateUsingSurfaceDistance(v*g,L);m.height=C[v],p=t.cartographicToCartesian(m,_),P.Cartesian3.pack(p,o,d),d+=3}return d}(e[f],e[f+1],l,t,i?n[f]:n,i?n[f+1]:n,g,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 P.Cartesian3.pack(m,g,C-3),g},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]=P.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]=P.Cartesian3.unpack(e,3*n);return t},a.PolylinePipeline=b});
|