Hello,
Computing a circle on a 3D globe is surprisingly complicated. Here’s the function we use to compute our ellipses: EllipseGeometryLibrary.computeEllipsePositions
I’ve modified your example so that it uses that function:
var viewer = new Cesium.Viewer(‘cesiumContainer’);
var scene = viewer.scene;
var redCircleCenter = Cesium.Cartesian3.fromDegrees(-95.0, 43.0);
var redCircleRadius = 250000.0;
var circleGeometry = new Cesium.CircleGeometry({
center : redCircleCenter,
radius : redCircleRadius
});
var redCircleInstance = new Cesium.GeometryInstance({
geometry : circleGeometry,
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 0.0, 0.0, 0.5))
}
});
scene.primitives.add(new Cesium.Primitive({
geometryInstances: [redCircleInstance],
appearance: new Cesium.PerInstanceColorAppearance({‘flat’: true})
}));
var r = Cesium.EllipseGeometryLibrary.computeEllipsePositions({
semiMajorAxis: redCircleRadius,
semiMinorAxis: redCircleRadius,
rotation: 0,
center: redCircleCenter,
granularity : 0.02 // make this number larger to get fewer positions
}, false, true);
var positions = r.outerPositions;
for (var i = 0; i < positions.length; i+=3) {
viewer.entities.add({
polyline: {
‘positions’: [redCircleCenter, new Cesium.Cartesian3(positions[i], positions[i+1], positions[i+2])],
‘width’: 10,
‘material’: new Cesium.PolylineArrowMaterialProperty(Cesium.Color.YELLOW)
}
});
}
``
It seems I’ve found a bug that we’re missing two of the positions though… I’ll look into fixing that.
Hope this helps,
Hannah