| Autor |
Nachricht |
Webo
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.05.2012
Beiträge: 1
|
Webo Mitglied
19:14:37 27.05.2012 Titel: |
Triangulierung einer Kugel |
Zitieren |
Hallo zusammen,
ich sitze gerade an meiner Aufgabe und komme irgendwie nicht weiter.
Man soll eine Kugel/Sphäre als Dreiecknetz darstellen. Dazu ist diese http://dl.dropbox.com/u/7305802/triangles.PNG Skizze gegeben und die Formel zur Berechnung des Sphärenradius für gegebene Kugelkoordinaten.
Das vorgegebene Programmgerüst
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | glBegin(GL_POINTS);
// {
float c = 0.0f;
for (float theta = 0.0f; theta < 2.0f*M_PI; theta += a, c += a/2.0f)
for (float phi = 0.0f; phi < 2.0f*M_PI; phi += a)
{
// Here something is missing...
float p_1[3] = {sin(theta)*cos(phi+c),
sin(theta)*sin(phi+c),
cos(theta)};
glVertex3f(p_1[0], p_1[1], p_1[2]);
// Here something is missing...
// Compute a color value instead of hardware lighting
if (g_compute_lighting == 1)
{
// Here something is missing...
}
}
// }
glEnd(); | |
Woraus ich jetzt erstmal
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | void sp_r(float theta, float phi, float* tochange)
{
tochange[0] = sin(theta) * cos(phi);
tochange[1] = sin(theta) * sin(phi);
tochange[2] = cos(theta);
}
[...]
float c = 0.0f;
int b = 0;
for (float theta = 0.0f; theta < 2.0f*M_PI; theta += a, c += a/2.0f, b++)
{
for (float phi = 0.0f; phi < 2.0f*M_PI; phi += a)
{
float p_1[3];
float p_2[3];
float p_3[3];
float p_4[3];
if (b % 2 != 0)
{
sp_r(theta + a, phi, p_1);
sp_r(theta , phi + a/2.0f, p_2);
sp_r(theta + a, phi + a, p_3);
sp_r(theta , phi + a + a/2.0f, p_4);
} else
{
sp_r(theta, phi, p_1);
sp_r(theta + a, phi + a/2.0f, p_2);
sp_r(theta, phi + a, p_3);
sp_r(theta + a, phi + a + a/2.0f, p_4);
}
glBegin(GL_TRIANGLES);
glVertex3f(p_1[0], p_1[1], p_1[2]);
glVertex3f(p_2[0], p_2[1], p_2[2]);
glVertex3f(p_3[0], p_3[1], p_3[2]);
glVertex3f(p_2[0], p_2[1], p_2[2]);
glVertex3f(p_3[0], p_3[1], p_3[2]);
glVertex3f(p_4[0], p_4[1], p_4[2]);
glEnd();
// Here something is missing...
// Compute a color value instead of hardware lighting
if (g_compute_lighting == 1)
{
// Here something is missing...
}
}
// }
} | |
gemacht hab. Allerdings funktioniert das jetzt nur halb. Es fehlen zwischendurch Dreiecke.
Könnte mir bitte jemand auf die Sprünge helfen?
Grüße
Webo |
|
|
|
 |
Die erinnerung
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.10.2010
Beiträge: 337
|
Die erinnerung Mitglied
17:55:40 28.05.2012 Titel: |
|
Zitieren |
Ne Idee für ne Lösung wäre:
Dir ist bekannt, aus wie vielen Dreiecken die Kugel besteht? Oder hast du zumindest die Möglichkeit herrauszufinden?
Wenn ja ist meine Lösung:
Finde herraus, wie viele Eckpunkte du hast (sind glaube ich genau so viele, wie Dreiecke). Dann verteile diese gleichmäßig über die Kugeloberfläche und mache daraus Dreiecke.
Wäre meine Idee... |
_________________ Ich bin icht perfekt!
Aber meistens!
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|