1

假设您有一个 2d 对象,您可以轻松地将其划分为 15 度旋转,只需围绕中心以 15 度增量旋转即可。

如果我想为一个 3d 对象计算所有可能的角度,每个角度之间的间距相等,我将如何去做。

尽管为每个执行 p*r*y 会起作用,但它会相当随意并且有大量的重叠。我也非常想要一个四元数解决方案。

我正在为我目前正在开发的一个视频游戏项目做这个,本质上是一个老式的飞行模拟,虽然游戏中的 3d 被渲染为 2d 精灵。我正在寻找一种简单的方法来渲染我的飞机模型的所有可能的角度,其中包括每个正交的等间距角度。

4

1 回答 1

2

有多种方法可以做到这一点;解决方案不是从给定的信息中唯一定义的。另请注意,“所有可能的角度”这一短语具有误导性,因为存在无限的角度。

然而,如果“3d 角”的字面意思是立体角(以球面度为单位),那么柏拉图立体会将球体分成相等的立体角。(从技术上讲,您想要球形多面体,但它们“几乎”相同,因为我们可以采用多面体解决方案并“放松”它。)

记住您希望“ [包括]每个正交[角度] ”的条件(应该有一些相互正交的三重视图),我们很遗憾地注意到只有一个柏拉图立体满足这个,即八面体:

在此处输入图像描述

可悲的是,这将对应于仅采用正交视图(并且仅是那些视图)。那会很无聊,可能不是你想要的。但是,您可以做的是建立在此解决方案的基础上,并细分八面体。这里有两种可能性:

  1. 对于八面体中的每个面,您可以在该面的中心创建一个新视图(星状)。结果将是每个顶点的视图,如这个 4 视图折纸所示(奇怪的是我能找到的最好的图片)。因此,除了正交角度之外,您还可以在每个轴之间获得 8 个角度,形式为(±1,±1,±1)。将视图数量保持在可管理的范围内。

  2. 如果你想要更多的视野,你可以做一些类似建造测地线穹顶的事情,除了你从八面体而不是二十面体开始。在第一个示例中,我们将每个三角形面细分为具有细分幂的“三角力”,以获得“2 频八面体测地球”。

在此处输入图像描述在此处输入图像描述*

*原始链接

算法:取每个相邻顶点的数学平均值来产生新的顶点。

这可能无法完美地划分角度,但会非常接近。如果您希望立体角更加“相等”,请参阅链接以获取“3 频八面体测地线球体”的示例。

算法:对于第一个近似值,您可以通过取向量来三等分一个角度,(A+2B)/3反之亦然。如果您进一步寻求极高的精度,而不是明确计算方程,您可以使用四面体的立体角公式作为精度度量,并对您的初始猜测执行松弛,您可以缓慢地扰动三等分线朝向或远离起源。

此外,谷歌搜索结果在数学上有点密集,但您可能能够从等面积球面多面体中收集一些用途。

于 2012-03-05T23:02:13.903 回答