Würfelsimulator
Würfelsimulator
Würfelsimulator
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
PDA-Programmieren • "<strong>Würfelsimulator</strong>" • SS10 • Simon Brennecke • Ivo Torp • Klaus Manneck<br />
Generierung der Drahtgittermodelle<br />
Die 3D-Modelle der Würfel (Meshes) werden zur Laufzeit generiert. Dies geschieht im Konstruktor<br />
der jeweiligen Dice-Klasse (z.B. Dice6 ). Dabei wird zunächst eine Liste der Eckpunkte erstellt.<br />
Vector3f[] vectors = new Vector3f[8];<br />
vectors[0] = new Vector3f(-0.5f, -0.5f, -0.5f);<br />
vectors[1] = new Vector3f(+0.5f, -0.5f, -0.5f);<br />
vectors[2] = new Vector3f(+0.5f, +0.5f, -0.5f);<br />
vectors[3] = new Vector3f(-0.5f, +0.5f, -0.5f);<br />
vectors[4] = new Vector3f(-0.5f, -0.5f, +0.5f);<br />
vectors[5] = new Vector3f(+0.5f, -0.5f, +0.5f);<br />
vectors[6] = new Vector3f(+0.5f, +0.5f, +0.5f);<br />
vectors[7] = new Vector3f(-0.5f, +0.5f, +0.5f);<br />
for (int i = 0; i < vectors.Length; i++)<br />
vectors[i].Normalize();<br />
Des Weiteren muss definiert werden, welche der Punkte zu einer Würfelseite gehören. Es wird pro<br />
Würfelart im Code festgelegt, wie viele Punkte eine Fläche bilden. Zu jedem Punkt einer jeden<br />
Fläche werden zusätzlich Texturkoordinaten hinzugefügt. Da (wie später noch erläutert) auf jeder<br />
Würfelseite eine eigene Textur mit jeweils einer Zahl verwendet wird, sind die Texturkoordinaten<br />
für jede Seite gleich.<br />
Für einen Dice6 sieht der Code, der die Eckpunkte, Flächen und Texturkoordinaten zusammenfasst,<br />
so aus:<br />
int[] vi = { 2, 3, 0, 1, 3, 2, 6, 7, 6, 2, 1, 5, 7, 4, 0, 3, 1, 0, 4, 5, 7, 6, 5, 4 };<br />
float[] tv = { 1.0f, 0.0f, 0.0f, 1.0f };<br />
float[] tu = { 1.0f, 1.0f, 0.0f, 0.0f };<br />
int i=0;<br />
for (int i = 0; i < 6; i++){<br />
Vertex3f[] vertices = new Vertex3f[4];<br />
for (int v = 0; v < vertices.Length; v++)<br />
vertices[v] = new Vertex3f(vectors[vi[n++]], tv[v % 4], tu[v % 4]);<br />
// … generate Surface with vertices …<br />
}<br />
Analog dazu wird es für die anderen Würfel gehandhabt. Dabei muss eine Fläche nicht zwingend<br />
aus 4 Ecken zusammengesetzt werden – so haben der Dice8 und der Dice20 nur 3-eckige Flächen,<br />
und der Dice12 hat sogar 5-eckige.<br />
Seite 13 / 37