Your Name
2022-03-14 aaebe147d319e59a8b510ff4ce9271088a330732
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * Cesium - https://github.com/AnalyticalGraphicsInc/cesium
 *
 * Copyright 2011-2017 Cesium Contributors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * 
 *  该版本修改了部分代码,主要是汉化、优化功能、添加接口 等 by 火星科技 http://marsgis.cn
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Columbus View (Pat. Pend.)
 *
 * Portions licensed separately.
 * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details.
 */
define(["exports","./defined-b9ff0e39","./Check-e6691f86","./defaultValue-199f5aa8","./Math-92bd3539","./Cartesian2-8fa798b8","./Transforms-a140c8a7","./IntersectionTests-260c9bf6","./Plane-b9a516bb","./EllipsoidRhumbLine-fb5cc30d","./EllipsoidGeodesic-b8e7c0c6"],function(a,T,e,w,P,b,y,v,m,A,r){"use strict";var E={numberOfPoints:function(a,e,r){var t=b.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 b.Cartographic;E.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 S=new y.Matrix4,R=new b.Cartesian3,M=new b.Cartesian3,D=new m.Plane(b.Cartesian3.UNIT_X,0),G=new b.Cartesian3,x=new m.Plane(b.Cartesian3.UNIT_X,0),N=new b.Cartesian3,I=new b.Cartesian3,V=[];function k(a,e,r){var t,i=V;if(i.length=a,e===r){for(t=0;t<a;t++)i[t]=e;return i}var n=(r-e)/a;for(t=0;t<a;t++){var o=e+t*n;i[t]=o}return i}var L=new b.Cartographic,_=new b.Cartographic,O=new b.Cartesian3,B=new b.Cartesian3,U=new b.Cartesian3,z=new r.EllipsoidGeodesic,X=new A.EllipsoidRhumbLine;function q(a,e,r,t,i,n,o,s){var c=t.scaleToGeodeticSurface(a,B),l=t.scaleToGeodeticSurface(e,U),u=E.numberOfPoints(a,e,r),f=t.cartesianToCartographic(c,L),h=t.cartesianToCartographic(l,_),C=k(u,i,n);z.setEndPoints(f,h);var g=z.surfaceDistance/u,d=s;f.height=i;var p=t.cartographicToCartesian(f,O);b.Cartesian3.pack(p,o,d),d+=3;for(var v=1;v<u;v++){var m=z.interpolateUsingSurfaceDistance(v*g,_);m.height=C[v],p=t.cartographicToCartesian(m,O),b.Cartesian3.pack(p,o,d),d+=3}return d}function W(a,e,r,t,i,n,o,s){var c=t.scaleToGeodeticSurface(a,B),l=t.scaleToGeodeticSurface(e,U),u=t.cartesianToCartographic(c,L),f=t.cartesianToCartographic(l,_),h=E.numberOfPointsRhumbLine(u,f,r),C=k(h,i,n);X.ellipsoid.equals(t)||(X=new A.EllipsoidRhumbLine(void 0,void 0,t)),X.setEndPoints(u,f);var g=X.surfaceDistance/h,d=s;u.height=i;var p=t.cartographicToCartesian(u,O);b.Cartesian3.pack(p,o,d),d+=3;for(var v=1;v<h;v++){var m=X.interpolateUsingSurfaceDistance(v*g,_);m.height=C[v],p=t.cartographicToCartesian(m,O),b.Cartesian3.pack(p,o,d),d+=3}return d}E.wrapLongitude=function(a,e){var r=[],t=[];if(T.defined(a)&&0<a.length){e=w.defaultValue(e,y.Matrix4.IDENTITY);var i=y.Matrix4.inverseTransformation(e,S),n=y.Matrix4.multiplyByPoint(i,b.Cartesian3.ZERO,R),o=b.Cartesian3.normalize(y.Matrix4.multiplyByPointAsVector(i,b.Cartesian3.UNIT_Y,M),M),s=m.Plane.fromPointNormal(n,o,D),c=b.Cartesian3.normalize(y.Matrix4.multiplyByPointAsVector(i,b.Cartesian3.UNIT_X,G),G),l=m.Plane.fromPointNormal(n,c,x),u=1;r.push(b.Cartesian3.clone(a[0]));for(var f=r[0],h=a.length,C=1;C<h;++C){var g=a[C];if(m.Plane.getPointDistance(l,f)<0||m.Plane.getPointDistance(l,g)<0){var d=v.IntersectionTests.lineSegmentPlane(f,g,s,N);if(T.defined(d)){var p=b.Cartesian3.multiplyByScalar(o,5e-9,I);m.Plane.getPointDistance(s,f)<0&&b.Cartesian3.negate(p,p),r.push(b.Cartesian3.add(d,p,new b.Cartesian3)),t.push(u+1),b.Cartesian3.negate(p,p),r.push(b.Cartesian3.add(d,p,new b.Cartesian3)),u=1}}r.push(b.Cartesian3.clone(a[C])),u++,f=g}t.push(u)}return{positions:r,lengths:t}},E.generateArc=function(a){T.defined(a)||(a={});var e=a.positions,r=e.length,t=w.defaultValue(a.ellipsoid,b.Ellipsoid.WGS84),i=w.defaultValue(a.height,0),n=y.isArray(i);if(r<1)return[];if(1===r){var o=t.scaleToGeodeticSurface(e[0],B);if(0!==(i=n?i[0]:i)){var s=t.geodeticSurfaceNormal(o,O);b.Cartesian3.multiplyByScalar(s,i,s),b.Cartesian3.add(o,s,o)}return[o.x,o.y,o.z]}var c=a.minDistance;if(!T.defined(c)){var l=w.defaultValue(a.granularity,P.CesiumMath.RADIANS_PER_DEGREE);c=P.CesiumMath.chordLength(l,t.maximumRadius)}var u,f=0;for(u=0;u<r-1;u++)f+=E.numberOfPoints(e[u],e[u+1],c);var h=3*(f+1),C=new Array(h),g=0;for(u=0;u<r-1;u++){g=q(e[u],e[u+1],c,t,n?i[u]:i,n?i[u+1]:i,C,g)}V.length=0;var d=e[r-1],p=t.cartesianToCartographic(d,L);p.height=n?i[r-1]:i;var v=t.cartographicToCartesian(p,O);return b.Cartesian3.pack(v,C,h-3),C};var Y=new b.Cartographic,H=new b.Cartographic;E.generateRhumbArc=function(a){T.defined(a)||(a={});var e=a.positions,r=e.length,t=w.defaultValue(a.ellipsoid,b.Ellipsoid.WGS84),i=w.defaultValue(a.height,0),n=y.isArray(i);if(r<1)return[];if(1===r){var o=t.scaleToGeodeticSurface(e[0],B);if(0!==(i=n?i[0]:i)){var s=t.geodeticSurfaceNormal(o,O);b.Cartesian3.multiplyByScalar(s,i,s),b.Cartesian3.add(o,s,o)}return[o.x,o.y,o.z]}var c,l,u=w.defaultValue(a.granularity,P.CesiumMath.RADIANS_PER_DEGREE),f=0,h=t.cartesianToCartographic(e[0],Y);for(c=0;c<r-1;c++)l=t.cartesianToCartographic(e[c+1],H),f+=E.numberOfPointsRhumbLine(h,l,u),h=b.Cartographic.clone(l,Y);var C=3*(f+1),g=new Array(C),d=0;for(c=0;c<r-1;c++){d=W(e[c],e[c+1],u,t,n?i[c]:i,n?i[c+1]:i,g,d)}V.length=0;var p=e[r-1],v=t.cartesianToCartographic(p,L);v.height=n?i[r-1]:i;var m=t.cartographicToCartesian(v,O);return b.Cartesian3.pack(m,g,C-3),g},E.generateCartesianArc=function(a){for(var e=E.generateArc(a),r=e.length/3,t=new Array(r),i=0;i<r;i++)t[i]=b.Cartesian3.unpack(e,3*i);return t},E.generateCartesianRhumbArc=function(a){for(var e=E.generateRhumbArc(a),r=e.length/3,t=new Array(r),i=0;i<r;i++)t[i]=b.Cartesian3.unpack(e,3*i);return t},a.PolylinePipeline=E});