2 lines
5.3 KiB
JavaScript
2 lines
5.3 KiB
JavaScript
/* 2020-9-22 15:23:25 | 版权所有 军懋国兴 */
|
|
define(["exports","./when-cbf8cd21","./Check-35e1a91d","./Math-69007a69","./Cartesian2-43e3a3be","./Transforms-2d1ac5ec","./IntersectionTests-459f6f08","./Plane-46b5436f","./EllipsoidRhumbLine-357c11e7","./EllipsoidGeodesic-007422da"],function(a,w,P,T,y,v,m,A,E,e){"use strict";var b={numberOfPoints:function(a,e,r){var t=y.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 y.Cartographic;b.extractHeights=function(a,e){for(var r=a.length,t=new Array(r),i=0;i<r;i++){var n=a[i];t[i]=e.cartesianToCartographic(n,o).height}return t};var R=new v.Matrix4,M=new y.Cartesian3,S=new y.Cartesian3,D=new A.Plane(y.Cartesian3.UNIT_X,0),x=new y.Cartesian3,N=new A.Plane(y.Cartesian3.UNIT_X,0),G=new y.Cartesian3,I=new y.Cartesian3,k=[];function V(a,e,r){var t=k;if(t.length=a,e===r){for(n=0;n<a;n++)t[n]=e;return t}for(var i=(r-e)/a,n=0;n<a;n++){var o=e+n*i;t[n]=o}return t}var L=new y.Cartographic,_=new y.Cartographic,O=new y.Cartesian3,B=new y.Cartesian3,U=new y.Cartesian3,q=new e.EllipsoidGeodesic,z=new E.EllipsoidRhumbLine;b.wrapLongitude=function(a,e){var r=[],t=[];if(w.defined(a)&&0<a.length){e=w.defaultValue(e,v.Matrix4.IDENTITY);var i=v.Matrix4.inverseTransformation(e,R),n=v.Matrix4.multiplyByPoint(i,y.Cartesian3.ZERO,M),o=y.Cartesian3.normalize(v.Matrix4.multiplyByPointAsVector(i,y.Cartesian3.UNIT_Y,S),S),s=A.Plane.fromPointNormal(n,o,D),c=y.Cartesian3.normalize(v.Matrix4.multiplyByPointAsVector(i,y.Cartesian3.UNIT_X,x),x),l=A.Plane.fromPointNormal(n,c,N),u=1;r.push(y.Cartesian3.clone(a[0]));for(var h=r[0],f=a.length,p=1;p<f;++p){var d,g,C=a[p];(A.Plane.getPointDistance(l,h)<0||A.Plane.getPointDistance(l,C)<0)&&(d=m.IntersectionTests.lineSegmentPlane(h,C,s,G),w.defined(d)&&(g=y.Cartesian3.multiplyByScalar(o,5e-9,I),A.Plane.getPointDistance(s,h)<0&&y.Cartesian3.negate(g,g),r.push(y.Cartesian3.add(d,g,new y.Cartesian3)),t.push(u+1),y.Cartesian3.negate(g,g),r.push(y.Cartesian3.add(d,g,new y.Cartesian3)),u=1)),r.push(y.Cartesian3.clone(a[p])),u++,h=C}t.push(u)}return{positions:r,lengths:t}},b.generateArc=function(a){w.defined(a)||(a={});var e=a.positions;if(!w.defined(e))throw new P.DeveloperError("options.positions is required.");var r=e.length,t=w.defaultValue(a.ellipsoid,y.Ellipsoid.WGS84),i=w.defaultValue(a.height,0),n=Array.isArray(i);if(r<1)return[];if(1===r){var o,s=t.scaleToGeodeticSurface(e[0],B);return 0!==(i=n?i[0]:i)&&(o=t.geodeticSurfaceNormal(s,O),y.Cartesian3.multiplyByScalar(o,i,o),y.Cartesian3.add(s,o,s)),[s.x,s.y,s.z]}var c,l=a.minDistance;w.defined(l)||(c=w.defaultValue(a.granularity,T.CesiumMath.RADIANS_PER_DEGREE),l=T.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),p=new Array(f),d=0;for(h=0;h<r-1;h++)d=function(a,e,r,t,i,n,o,s){var c=t.scaleToGeodeticSurface(a,B),l=t.scaleToGeodeticSurface(e,U),u=b.numberOfPoints(a,e,r),h=t.cartesianToCartographic(c,L),f=t.cartesianToCartographic(l,_),p=V(u,i,n);q.setEndPoints(h,f);var d=q.surfaceDistance/u,g=s;h.height=i;var C=t.cartographicToCartesian(h,O);y.Cartesian3.pack(C,o,g),g+=3;for(var v=1;v<u;v++){var m=q.interpolateUsingSurfaceDistance(v*d,_);m.height=p[v],C=t.cartographicToCartesian(m,O),y.Cartesian3.pack(C,o,g),g+=3}return g}(e[h],e[h+1],l,t,n?i[h]:i,n?i[h+1]:i,p,d);k.length=0;var g=e[r-1],C=t.cartesianToCartographic(g,L);C.height=n?i[r-1]:i;var v=t.cartographicToCartesian(C,O);return y.Cartesian3.pack(v,p,f-3),p};var X=new y.Cartographic,W=new y.Cartographic;b.generateRhumbArc=function(a){w.defined(a)||(a={});var e=a.positions;if(!w.defined(e))throw new P.DeveloperError("options.positions is required.");var r=e.length,t=w.defaultValue(a.ellipsoid,y.Ellipsoid.WGS84),i=w.defaultValue(a.height,0),n=Array.isArray(i);if(r<1)return[];if(1===r){var o,s=t.scaleToGeodeticSurface(e[0],B);return 0!==(i=n?i[0]:i)&&(o=t.geodeticSurfaceNormal(s,O),y.Cartesian3.multiplyByScalar(o,i,o),y.Cartesian3.add(s,o,s)),[s.x,s.y,s.z]}for(var c,l=w.defaultValue(a.granularity,T.CesiumMath.RADIANS_PER_DEGREE),u=0,h=t.cartesianToCartographic(e[0],X),f=0;f<r-1;f++)c=t.cartesianToCartographic(e[f+1],W),u+=b.numberOfPointsRhumbLine(h,c,l),h=y.Cartographic.clone(c,X);var p=3*(u+1),d=new Array(p),g=0;for(f=0;f<r-1;f++)g=function(a,e,r,t,i,n,o,s){var c=t.cartesianToCartographic(a,L),l=t.cartesianToCartographic(e,_),u=b.numberOfPointsRhumbLine(c,l,r);c.height=0,l.height=0;var h=V(u,i,n);z.ellipsoid.equals(t)||(z=new E.EllipsoidRhumbLine(void 0,void 0,t)),z.setEndPoints(c,l);var f=z.surfaceDistance/u,p=s;c.height=i;var d=t.cartographicToCartesian(c,O);y.Cartesian3.pack(d,o,p),p+=3;for(var g=1;g<u;g++){var C=z.interpolateUsingSurfaceDistance(g*f,_);C.height=h[g],d=t.cartographicToCartesian(C,O),y.Cartesian3.pack(d,o,p),p+=3}return p}(e[f],e[f+1],l,t,n?i[f]:i,n?i[f+1]:i,d,g);k.length=0;var C=e[r-1],v=t.cartesianToCartographic(C,L);v.height=n?i[r-1]:i;var m=t.cartographicToCartesian(v,O);return y.Cartesian3.pack(m,d,p-3),d},b.generateCartesianArc=function(a){for(var e=b.generateArc(a),r=e.length/3,t=new Array(r),i=0;i<r;i++)t[i]=y.Cartesian3.unpack(e,3*i);return t},b.generateCartesianRhumbArc=function(a){for(var e=b.generateRhumbArc(a),r=e.length/3,t=new Array(r),i=0;i<r;i++)t[i]=y.Cartesian3.unpack(e,3*i);return t},a.PolylinePipeline=b}); |