Cesium半椭球体面的生成思路

本文探讨了在Cesium中如何通过Primitive而非EllipsoidGraphics创建半椭球体面。虽然可以尝试通过设置EllipsoidGraphics的高度来隐藏下半部分,但这无法满足有离地高度的需求。文章详细介绍了利用PolygonGraphic和Primitive接口的挑战,包括椭球面划分、坐标计算和排列。最终,作者提出通过三角网格划分椭球面,并结合坐标变换来实现半椭球体的绘制,指出两种变换方法的可行性,并建议参考EllipsoidGeometry的createGeometry方法来生成Geometry实例。

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

Cesium提供了两种方式让使用着加载自己所需要的几何图形,分别是Entity和Primitive。前者是一些已经封装好的接口,可以很方面的添加点、线、面、矩形、椭球体、圆柱体等形状。对于一些意见的使用来说,Entity接口可以用极少量的代码就可以实现所需要的功能。另外一种则是Primitive,相比Entity来说,这种方式需要使用者对Cesium有着更深层次的理解,因为在Primitive中我们可以添加自定义的形状如:半椭球体,扇形等等形状。本文的重点主要讲解通过primitive添加半椭球体。

有的读者可能这么认为,半椭球体就是整个椭球体的一半,通过Cesium封装的EllipsoidGraphics接口参数中高度值进行设置,将椭球体的下半部分隐藏在球体中,就可以实现半椭球形状。实际上这种方式思想上有一定的借鉴性,但是在实际的使用却是万万不能这么做的,说这种方式在思想上有借鉴性的原因将会在后面进行介绍。现在,我们需要重新明确一下需求,我们所要做的椭球体是可以有离地高度的,这样以来通过EllipsoidGraphics接口来实现的方法就不能满足我们的需求了。在这种情况下,我们就需要思考到底有哪些可行的技术方案:

首先,通过Entity中的PolygonGraphic接口进行实现。这里我们可以将椭球体表面作为面对象而进行绘制。但是这样做的画有以下几点需要考虑,椭球面的划分,椭球面点坐标计算,椭球面点坐标的排列。这三个问题摆在我们面前其实意见相当的复杂了。笔者层沿着这条路进行了一段时间,虽然有一定的效果,但是由于计算过程的复杂性还是转而思考别的实现方式。

通过Primitive接口进行实现,这里的一些经验可以借鉴https://my.oschina.net/luosongMZ/blog/284363所提供的一些经验,但是有些地方我们需要注意,在Primitive构造方法中需要将asynchronous参数设置为false,这样才正确的将图形进行显示。关于这个参数的介绍将会在后续的文章进行介绍。通过以上的示例,我发现可以将椭球面进行三角网格划分,再通过对这些三角网格进行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值