Cesium实现垂直空心圆柱(竖直管道)

本文介绍了一种在项目中使用Turf.js库和Cesium库生成具有厚度的垂直空心管道的方法,通过内外圈多边形圆的计算和Cesium的polygon实体创建实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中,有时会有实现 垂直空心圆柱(管道)的需求;

对于倾斜的或水平的管道实现起来比较容易,网上也有一些教程,但是对于垂直的管道就会发现生成的管道没有厚度,网上对于竖直管道生成的分享也几乎没有,这里就给大家分享一下我的实现思路。

先上代码:

温馨提示:此方法需要借助 turf.js

turf 库官网链接:GET START | Turf.js中文网

var center = [112.044137, 38.708863]; // 圆柱中心
var radius_out = 0.005; //外圈半径
var radius_in = 0.003; //内圈半径
var options = {
  steps: 1000, //几边形圆,4,四边形
  units: 'kilometers', //千米
  properties: { foo: 'bar' },
};
//外圈
var circle_wai = turf.circle(center, radius_out, options);
let waiquan = circle_wai.geometry.coordinates[0].flat();
waiquan.splice(waiquan.length - 2, 2);
//内圈
var circle_nei = turf.circle(center, radius_in, options);
let neiquan = circle_nei.geometry.coordinates[0].flat();
neiquan.splice(neiquan.length - 2, 2);
//生成带孔多边形
const polygonHoles = viewer.entities.add({
  polygon: {
    hierarchy: {
      positions: Cesium.Cartesian3.fromDegreesArray(waiquan),
      holes: [
        {
          positions: Cesium.Cartesian3.fromDegreesArray(neiquan),
        },
      ],
    },
    extrudedHeight: 1545, //圆柱底部高度
    material: Cesium.Color.fromCssColorString('#1ca5ff').withAlpha(0.8),
    height: 1570, //圆柱顶部高度
  }
 });
viewer.zoomTo(polygonHoles);

思路:

       该方法是借助 turf 库的 turf.circle()方法,基于一个点坐标,内、外圈半径,生成两组多边形圆坐标,只要指定边数越大,生成的多边形圆就越接近圆形。 拿到两组多边形圆的坐标后使用 Cesium 方法生成带孔的 polygon 实体即可。

如果对你有帮助, 就请点一个赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值