0

维基百科说原点的十二面体具有具有此坐标(x,y,z)的顶点:

   (±1, ±1, ±1)
   (0, ±1/φ, ±φ)
   (±1/φ, ±φ, 0)
   (±φ, 0, ±1/φ)

where φ is golden ratio (φ = (1 + √5) / 2 ≈ 1.618 )

假设我将在 vertexBuffer 中有这个顶点 - 这将是一个 Point3D 数组。我需要为 indexBuffer(它是一个 int 数组)准备三角形索引。十二面体有 12 个面,每个面都是五边形,我将以这种方式从 3 个三角形创建每个面:

在此处输入图像描述

first triangle: a,e,b
second triangle: b,e,d
third triangle: d,c,b

为了更简单的多面体,我可以绘制它,然后标记顶点,然后轻松获取索引,但在这种情况下,这不是一个好方法,因为在这个有 20 个面的二十面体等着我之后:/
所以我的问题是:有没有任何更简单的方法如何根据上面指定的要求获取此顶点的索引?


注意:
我还应该提到,我不能使用 openGL 或 DirectX。我们应该在没有这个库的情况下练习 3D 图形。

4

1 回答 1

0

第一组 8 个顶点定义了一个立方体。

剩下的 3x4 点分为 6 对,位于立方体的 6 个面的每一个之外。

每组六个点(立方体面的四个顶点和相应的远离原点的两个点)形成一个重复六次的图案。您可以从每组中获得 6 个三角形。

二十面体实际上更简单:它只有 20 个三角形而不是 36 个。它具有类似的模式,您可以在其 Wikipedia 页面上看到。

于 2012-05-05T16:35:41.503 回答