Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function addLines(pointA,pointB){
- var earth = Cesium.Ellipsoid.WGS84;
- // start and end points on the surface of the earth
- var startPoint = earth.cartographicToCartesian(Cesium.Cartographic.fromDegrees(pointA[0][0], pointA[0][1], 0.0));
- var endPoint = earth.cartographicToCartesian(Cesium.Cartographic.fromDegrees(pointB[0][0], pointB[0][1], 0.0));
- // determine the midpoint (point will be inside the earth)
- var midpointCartesian = startPoint.add(endPoint).divideByScalar(2.0);
- // move the midpoint to the surface of the earth
- earth.scaleToGeodeticSurface(midpointCartesian);
- // add some altitude if you want (1000 km in this case)
- var midpointCartographic = earth.cartesianToCartographic(midpointCartesian);
- midpointCartographic.height = 1000000;
- midpointCartesian = earth.cartographicToCartesian(midpointCartographic);
- // create a hermite spline that goes through these three points
- var hermiteSpline = new Cesium.HermiteSpline( [
- {point: startPoint, time: 0.0},
- {point: midpointCartesian, time: 0.5},
- {point: endPoint, time: 1.0}
- ]);
- // create a 20 point polyline that follows the spline
- var polylinePoints = [];
- for(var i=0; i<20; ++i) {
- polylinePoints.push(hermiteSpline.evaluate(i/20));
- }
- var polylineCollection = new Cesium.PolylineCollection();
- var polyline = polylineCollection.add();
- polyline.setPositions(polylinePoints);
- var primitives = widget.scene.getPrimitives();
- primitives.add(polylineCollection);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement