2012-05-05 4 views
0

Wikipedia dit que dodécaèdre à l'origine a des sommets avec cette coordonnées (x, y, z):
Index des triangles de dodécaèdre centrés sur l'origine

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

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

Disons que je vais avoir cette vertex dans vertexBuffer - qui sera un tableau de Point3D. J'ai besoin de préparer des index de triangles pour indexBuffer (qui est un tableau de int). Dodécaèdre a 12 faces, chaque face est pentagone et je vais créer chaque face de 3 triangles de cette façon:

enter image description here

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

Pour polyèdre plus facile, je peux le dessiner et marquer ensuite les sommets, puis obtenir facilement les indices, Donc, ma question est: Y at-il un moyen plus facile d'obtenir des index pour ces sommets selon les exigences spécifiées ci-dessus?/


Note:
Je dois aussi mentionner que je ne pouvais pas utiliser openGL ou DirectX. Nous devrions pratiquer des graphiques 3D sans ces bibliothèques.

Répondre

0

Le premier ensemble de 8 sommets définit un cube.

Les points restants 3x4 viennent en 6 paires qui se trouvent à l'extérieur de chacune des 6 faces du cube.

Chaque ensemble de six points (quatre sommets de la face du cube et les deux points correspondants plus éloignés de l'origine) forment un motif qui se répète six fois. Vous pouvez obtenir 6 triangles de chaque série.

Un icosaèdre est en fait plus simple: il a seulement 20 triangles au lieu de 36. Il a un modèle similaire, que vous pouvez voir sur sa page Wikipedia.