gpt4 book ai didi

java - 设置形状高度的任何方法

转载 作者:行者123 更新时间:2023-11-30 03:30:44 25 4
gpt4 key购买 nike

我正在研究世界风,有一个表面椭圆,但我想设置这个椭圆的高度。

我尝试使用方法moveTo,或者直接在构造函数中实例化海拔,但没有任何效果,而且我的形状仍然固定在地球上。

这是我创建形状的方法:

final SurfaceEllipse shape = new SurfaceEllipse();
shape.setRadii(100000, 100000);
shape.moveTo(Position.fromDegrees(50.0, 0.0, 50*20000)); // just a test
layer.addRenderable(shape);

最佳答案

Position确实需要 elevation ,它只是一个 double ,其含义与 altitude 相同。 (至少根据 Position 的 getters)。

但是,SurfaceEllipse实现SurfaceObject接口(interface)被记录为:

Common interface for renderables that are drawn on the Globe's surface terrain, such as SurfaceShape. SurfaceObject implements the Renderable and PreRenderable interfaces, so a surface object may be aggregated within any layer or within some arbitrary rendering code.

需要注意的关键词是“绘制在地球仪的表面地形上”。您无法设置海拔。它必须是该位置的地球表面的海拔。所以你可以读取它,但不能设置它。

我建议使用另一个类来制作你的形状。围绕类继承结构进行探索,您可能会找到一些可以做您想做的事情。

AbstractGeneralShape文件是modelPosition如:

This shape's geographic location. The altitude is relative to this shapes altitude mode.

因此 AbstractGeneralShape 下的任何类都具有高度模式的概念。

AbstractShape还有 altitudeMode ,其下方是 path ,一个最终记录高度模式的类。

Path将高度模式记录为:

Altitudes within the path's positions are interpreted according to the path's altitude mode. If the altitude mode is WorldWind.ABSOLUTE, the altitudes are considered as height above the ellipsoid. If the altitude mode is WorldWind.RELATIVE_TO_GROUND, the altitudes are added to the elevation of the terrain at the position. If the altitude mode is WorldWind.CLAMP_TO_GROUND the altitudes are ignored.

因此,要做您想做的事情,您需要确保您没有处于 WorldWind.CLAMP_TO_GROUND 海拔模式。

考虑到这一点,请看一下 Ellipsoid

A general ellipsoid volume defined by a center position and the three ellipsoid axis radii. If A is the radius in the north-south direction, and b is the radius in the east-west direction, and c is the radius in the vertical direction (increasing altitude), then A == B == C defines a sphere, A == B > C defines a vertically flattened spheroid (disk-shaped), A == B < C defines a vertically stretched spheroid.

这是一个冗长的方式来说明它是这样构建的:

ellipsoid

使 C 足够小,这样就可以很好地近似二维椭圆。

然而,它实际上仍然是三维的。我发现的大多数具有 altitudeMode 的内容都是 3D,但 Path 除外。 。路径有一些有趣的地形属性。

您可能希望椭圆内部是开放的。在三个维度中,这称为环面。它们看起来像这样:

elliptical torus

不幸的是我在 worldwind API 中找不到这个形状。但是,您可以从头开始创建自己的形状。 http://goworldwind.org/developers-guide/how-to-build-a-custom-renderable/

我能在 API 中找到的最接近的是 ExtrudedPolygon它采用一个多边形并允许您添加高度。由您来定义多边形的形状。挤压形状如下所示:

extruded leaf

它们总是让我想起橡皮泥:

play doh factory

希望有帮助。

关于java - 设置形状高度的任何方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com