Position确实需要一个elevation,这只是 a并且与高度double
相同(至少根据的吸气剂)。 Position
但是,SurfaceEllipse实现了SurfaceObject接口,该接口被记录为:
绘制在 Globe 表面地形上的可渲染对象的通用接口,例如 SurfaceShape。SurfaceObject 实现了 Renderable 和 PreRenderable 接口,因此表面对象可以在任何层或任意渲染代码中聚合。
这里要注意的关键词是“在地球表面地形上绘制”。不能设置高度。它必须是该位置的地球表面高度。所以你可以阅读它,但不能设置它。
我建议使用另一个类来塑造你的形状。围绕类继承结构反弹,您可能会找到一些可以做您想做的事情。
AbstractGeneralShape 将其modelPosition 记录为:
此形状的地理位置。高度与此形状高度模式有关。
所以下面的任何类AbstractGeneralShape
都有海拔模式的概念。
AbstractShape也有altitudeMode
,在它下面是path,一个最终记录高度模式的类。
路径文件高度模式为:
路径位置内的高度根据路径的高度模式进行解释。如果高度模式为 WorldWind.ABSOLUTE,则高度被视为高于椭球的高度。如果海拔模式为 WorldWind.RELATIVE_TO_GROUND,海拔将添加到该位置的地形海拔。如果高度模式为 WorldWind.CLAMP_TO_GROUND,则忽略高度。
所以要做你想做的事,你需要确保你没有处于WorldWind.CLAMP_TO_GROUND
海拔模式。
考虑到这一点,看看Ellipsoid。
由中心位置和三个椭球轴半径定义的一般椭球体积。如果A是南北方向的半径,b是东西方向的半径,c是垂直方向的半径(增加高度),那么A == B == C定义一个球体, A == B > C 定义一个垂直扁平的球体(圆盘形),A == B < C 定义一个垂直拉伸的球体。
这是一个冗长的方式来说它是这样构造的:

使 C 足够小,并且可以很好地近似二维椭圆。
然而,它实际上仍然是三维的。我发现的大部分内容altitudeMode
都是 3D,但Path除外。Path 有一些有趣的地形属性。
可能是你希望你的椭圆在里面是开放的。在三个维度上,这被称为环面。它们看起来像这样:

不幸的是,我在 worldwind API 中找不到这种形状。但是,您可以从头开始创建自己的形状。 http://goworldwind.org/developers-guide/how-to-build-a-custom-renderable/
我在 API 中能找到的最接近的是ExtrudedPolygon,它采用多边形并允许您添加高度。由您来定义多边形的形状。挤出的形状如下所示:

他们总是让我想起 play doh:

希望能帮助到你。