【问题标题】:Dividing up 3d angles into equal quantities将 3d 角度分成相等的数量
【发布时间】:2011-11-25 12:28:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: 3d 2d angle quaternions love2d


    【解决方案1】:

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

    尽管如此,如果“3d 角”的字面意思是solid-angle(以球面度为单位),那么platonic solids 会将球体分成相等的立体角。 (从技术上讲,你想要spherical polyhedra,但它们“几乎”相同,因为我们可以采用多面体解决方案并“放松”它。)

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

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

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

    2. 如果您想要更多视图,您可以执行类似构建测地线圆顶的操作,只是您从八面体而不是二十面体开始。在第一个示例中,我们将每个三角形面细分为具有细分幂的“三角力”,以获得“2频八面体测地球”。

    → *

    * original link

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

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

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

    此外,谷歌搜索结果在数学上有点密集,但您也许可以从 equal area spherical polyhedra 中收集到一些用途。

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 2011-02-15
      • 2015-06-25
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 2019-05-06
      相关资源
      最近更新 更多