Cone shape with base touching the Earth's surface

Hi,

I’m looking to draw satellite field of views in cesium. At the moment I can draw either a cone (cylinder with top radius = 0) which only touches the Earth’s surface at the centre of the base, or I can draw a polyline/circle on the Earth’s surface.

I’m looking to implement something like this

Does anyone have a suggestion as to what shape I could use in cesium to obtain this?

Thanks!

.

Ah after some research I have a feeling this is a cesium pro feature?

hello,
maybe you should see https://github.com/jlouns/cesium-sensor-volumes

1 Like

Fantastic, thanks for that.

I’ve managed to get the rectangular and customs working, but there are no examples for the conicsensor, and no documentation so I’m not exactly sure what arguments it takes.

Instead using a custom shape with 60 sides as the base, which kind of looks like a circle.

Well,

Okay thanks for the help.

I was trying to get it to load it into an entity but no luck.

Adding to viewer.scene.primitives works fine though.

This is because I want the functionality to disable a sensor and not have to clear the entire scene.

var FOV = new Cesium.GeoJsonDataSource();
FOV.load(**"**fov.json").then(function () {
    var entities = FOV.entities.values;
    for (var i = 0; i < entities.length; i++) {
        var entity = entities[i];
        entity.billboard = undefined;
        entity.addProperty('customSensor');
        entity.customSensor = new CesiumSensorVolumes.CustomSensorVolume();
        directions = [];
        for (var i = 0; i < 360; ++i) {
            var clock = Cesium.Math.toRadians(1.0 * i);
            var cone = Cesium.Math.toRadians(entity.properties.half-width); //half-width angle of the cone
            directions.push(new Cesium.Spherical(clock, cone));
        }
        entity.customSensor.modelMatrix = getModelMatrix(lon = entity.properties.LON, lat = entity.properties.LAT, alt = entity.properties.HEIGHT * 1000);
        entity.customSensor.radius = 10000000.0;
        entity.customSensor.directions = directions;
        entity.customSensor.intersectionColor = new Cesium.ConstantProperty(new Cesium.Color(0.1, 0.2, 0.3, 0.4)); //red
        //viewer.scene.primitives.add(entity.customSensor); //uncommenting this makes it display, but I want it as part of the entity if poss
    }
});

viewer.dataSources.add(FOV2)


``