cesium中的圆是平行于地面的,想实现竖起来的圆可以使用ellipsoid,设置其中一个轴的radii值为一个很小的值,比如0.00001,则这个轴上的宽度就会非常小,看起来就是一个圆面。
一、画圆ellipse,此处也把画圆的代码贴出来作为对比
viewer.entities.add({
position: new Cesium.Cartesian3.fromDegrees(113.3960024, 38.090712, 500),
ellipse: {
semiMajorAxis: 1000,
semiMinorAxis: 1000,
material: Cesium.Color.RED,
height: 100
}
});
二、画椭球ellipsoid,先不设置radii
viewer.entities.add({
position: new Cesium.Cartesian3.fromDegrees(113.4410851867723, 38.07983596564565, 500),
ellipsoid: {
radii: new Cesium.Cartesian3(1000, 1000, 1000),
material: Cesium.Color.RED.withAlpha(0.9),
}
});
三、分别设置三个轴的radii
可以看出,通过设置三个轴的radii能让椭球变成一个圆面,初步实现立起来的圆,如果要调整圆的方向,则需要设置orientation
四、设置圆面的方向orientation
let position = new Cesium.Cartesian3.fromDegrees(113.4410851867723, 38.07983596564565, 500);
viewer.entities.add({
position: position,
orientation: Cesium.Transforms.headingPitchRollQuaternion(
position,
new Cesium.HeadingPitchRoll(
Cesium.Math.toRadians(90),
)
),
ellipsoid: {
radii: new Cesium.Cartesian3(0.00001, 1000, 1000),
material: Cesium.Color.RED,
}
});
可以看出,如果设置了x轴的radii,再设置heading为90度,效果和单独设置y轴radii是一样的,可以根据需求配合radii和orientation,达到需要的效果。
其他参考