1 |
- define(["exports","./Cartographic-67e73ef9","./when-92c6cf3c","./Check-52a7d806","./Rectangle-bab7abf0","./EllipsoidGeodesic-04ac0e77","./EllipsoidRhumbLine-8847d1a1","./IntersectionTests-a42760d9","./Math-92c3b5f7","./PrimitiveType-cdfe443e","./Plane-f8d22530"],(function(e,t,r,a,n,i,o,c,s,u,h){"use strict";var f={numberOfPoints:function(e,r,a){var n=t.t.distance(e,r);return Math.ceil(n/a)},numberOfPointsRhumbLine:function(e,t,r){var a=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.ceil(Math.sqrt(a/(r*r)))}},l=new t.t$1;f.extractHeights=function(e,t){for(var r=e.length,a=new Array(r),n=0;n<r;n++){var i=e[n];a[n]=t.cartesianToCartographic(i,l).height}return a};var g=new u.y,p=new t.t,v=new t.t,d=new h.o(t.t.UNIT_X,0),m=new t.t,w=new h.o(t.t.UNIT_X,0),y=new t.t,T=new t.t,P=[];function A(e,t,r){var a,n=P;if(n.length=e,t===r){for(a=0;a<e;a++)n[a]=t;return n}var i=(r-t)/e;for(a=0;a<e;a++){var o=t+a*i;n[a]=o}return n}var C=new t.t$1,S=new t.t$1,b=new t.t,R=new t.t,E=new t.t,D=new i.E,G=new o.P;function N(e,r,a,n,i,o,c,s,u){var h=n.scaleToGeodeticSurface(e,R),l=n.scaleToGeodeticSurface(r,E),g=f.numberOfPoints(e,r,a),p=n.cartesianToCartographic(h,C),v=n.cartesianToCartographic(l,S),d=A(g,i,o);u>0&&(d=function(e,t){var r=P;r.length=e;for(var a=0;a<e;a++)r[a]+=t*Math.sin(Math.PI*a/e);return r}(g,u)),D.setEndPoints(p,v);var m=D.surfaceDistance/g,w=s;p.height=i;var y=n.cartographicToCartesian(p,b);t.t.pack(y,c,w),w+=3;for(var T=1;T<g;T++){var G=D.interpolateUsingSurfaceDistance(T*m,S);G.height=d[T],y=n.cartographicToCartesian(G,b),t.t.pack(y,c,w),w+=3}return w}function I(e,r,a,n,i,c,s,u){var h=n.scaleToGeodeticSurface(e,R),l=n.scaleToGeodeticSurface(r,E),g=n.cartesianToCartographic(h,C),p=n.cartesianToCartographic(l,S),v=f.numberOfPointsRhumbLine(g,p,a),d=A(v,i,c);G.ellipsoid.equals(n)||(G=new o.P(void 0,void 0,n)),G.setEndPoints(g,p);var m=G.surfaceDistance/v,w=u;g.height=i;var y=n.cartographicToCartesian(g,b);t.t.pack(y,s,w),w+=3;for(var T=1;T<v;T++){var P=G.interpolateUsingSurfaceDistance(T*m,S);P.height=d[T],y=n.cartographicToCartesian(P,b),t.t.pack(y,s,w),w+=3}return w}f.wrapLongitude=function(e,a){var n=[],i=[];if(r.e(e)&&e.length>0){a=r.u(a,u.y.IDENTITY);var o=u.y.inverseTransformation(a,g),s=u.y.multiplyByPoint(o,t.t.ZERO,p),f=t.t.normalize(u.y.multiplyByPointAsVector(o,t.t.UNIT_Y,v),v),l=h.o.fromPointNormal(s,f,d),P=t.t.normalize(u.y.multiplyByPointAsVector(o,t.t.UNIT_X,m),m),A=h.o.fromPointNormal(s,P,w),C=1;n.push(t.t.clone(e[0]));for(var S=n[0],b=e.length,R=1;R<b;++R){var E=e[R];if(h.o.getPointDistance(A,S)<0||h.o.getPointDistance(A,E)<0){var D=c.g.lineSegmentPlane(S,E,l,y);if(r.e(D)){var G=t.t.multiplyByScalar(f,5e-9,T);h.o.getPointDistance(l,S)<0&&t.t.negate(G,G),n.push(t.t.add(D,G,new t.t)),i.push(C+1),t.t.negate(G,G),n.push(t.t.add(D,G,new t.t)),C=1}}n.push(t.t.clone(e[R])),C++,S=E}i.push(C)}return{positions:n,lengths:i}},f.generateArc=function(e){r.e(e)||(e={});var i=e.positions;if(!r.e(i))throw new a.t("options.positions is required.");var o=i.length,c=r.u(e.ellipsoid,n.t.WGS84),u=r.u(e.height,0),h=Array.isArray(u);if(o<1)return[];if(1===o){var l=c.scaleToGeodeticSurface(i[0],R);if(0!==(u=h?u[0]:u)){var g=c.geodeticSurfaceNormal(l,b);t.t.multiplyByScalar(g,u,g),t.t.add(l,g,l)}return[l.x,l.y,l.z]}var p=e.minDistance;if(!r.e(p)){var v=r.u(e.granularity,s.e.RADIANS_PER_DEGREE);p=s.e.chordLength(v,c.maximumRadius)}var d,m=0;for(d=0;d<o-1;d++)m+=f.numberOfPoints(i[d],i[d+1],p);var w=e.hMax,y=3*(m+1),T=new Array(y),A=0;for(d=0;d<o-1;d++){A=N(i[d],i[d+1],p,c,h?u[d]:u,h?u[d+1]:u,T,A,w)}P.length=0;var S=i[o-1],E=c.cartesianToCartographic(S,C);E.height=h?u[o-1]:u;var D=c.cartographicToCartesian(E,b);return t.t.pack(D,T,y-3),T};var k=new t.t$1,M=new t.t$1;f.generateRhumbArc=function(e){r.e(e)||(e={});var i=e.positions;if(!r.e(i))throw new a.t("options.positions is required.");var o=i.length,c=r.u(e.ellipsoid,n.t.WGS84),u=r.u(e.height,0),h=Array.isArray(u);if(o<1)return[];if(1===o){var l=c.scaleToGeodeticSurface(i[0],R);if(0!==(u=h?u[0]:u)){var g=c.geodeticSurfaceNormal(l,b);t.t.multiplyByScalar(g,u,g),t.t.add(l,g,l)}return[l.x,l.y,l.z]}var p,v,d=r.u(e.granularity,s.e.RADIANS_PER_DEGREE),m=0,w=c.cartesianToCartographic(i[0],k);for(p=0;p<o-1;p++)v=c.cartesianToCartographic(i[p+1],M),m+=f.numberOfPointsRhumbLine(w,v,d),w=t.t$1.clone(v,k);var y=3*(m+1),T=new Array(y),A=0;for(p=0;p<o-1;p++){A=I(i[p],i[p+1],d,c,h?u[p]:u,h?u[p+1]:u,T,A)}P.length=0;var S=i[o-1],E=c.cartesianToCartographic(S,C);E.height=h?u[o-1]:u;var D=c.cartographicToCartesian(E,b);return t.t.pack(D,T,y-3),T},f.generateCartesianArc=function(e){for(var r=f.generateArc(e),a=r.length/3,n=new Array(a),i=0;i<a;i++)n[i]=t.t.unpack(r,3*i);return n},f.generateCartesianRhumbArc=function(e){for(var r=f.generateRhumbArc(e),a=r.length/3,n=new Array(a),i=0;i<a;i++)n[i]=t.t.unpack(r,3*i);return n},e.m=f}));
|