Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Mai 15, 2024 00:06

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: Sa Jan 26, 2008 13:59 
Offline
DGL Member

Registriert: Sa Jun 03, 2006 12:57
Beiträge: 2
Hallo,

ich lerne gerade für meine Computergrafik-Klausur und habe hier folgende Beispielaufgabe zu lösen, an der ich etwas zu knabbern hab:

Gegeben ist eine Funktion quad() die einen Einheitskubus zeichnet (Seitenlängen 1, 1, 1). Hieraus eine Szene mit einem Kubus mit den Ausmaßen (3, 2, 1) und einem Zentrum bei Vektor c E R³ (ich kann hier keine Vektoren darstellen, c ist ein einfacher Vektor, also bitte den kleinen Pfeil darüber dazu denken^^ E soll Element heißen). Die längste Achse zeigt in Richtung (1, 1, 0). Der Betrachter schaut aus unendlicher Entfernung und blickt in Richtung der Y-Achse. Das Projektionszentrum mit dem Augpunkt befindet sich bei Vektor e. Das Ansichtsvolumen besitzt die Größe Vektor a (Höhe, Tiefe, Breite) im Abstand d.

a) Wie sieht die Gesamt-Koordinatentransformation aus?

Das ist simpel und müsste das sein:

p' = P * V* M * p

b)

Defenieren Sie M, V, P mit Rx(alpha), Ry(beta), Rx(gamma) für eine Rotation. Die Verschiebung mit T(Vektor t), wobei t die Strecke darstellt. Und mit S(Vektor s) die Skallierung. Die Matrizen nicht ausschreiben!

Für M müsste das so aussehen:

M = T(c) * Rz(-45) * S(3, 2, 1)

Die Transformation c um den Kubus in sein angegebenes Zentrum zu verschieben, die Rotation um -45° um ihn die längste Achse auf die Diagonale zwischen X- und Y-Achse zu bekommen. Und die Skallierung um den Kubus auf seine Größe zu bekommen. Die Ausführungsreihenfolge ist natürlich dabei beachtet und findet hier von rechts nach links statt.

V = Rx(-90) * T(e)

Hier bin ich mir schon weniger sicher. Die Rotation um -90 damit wir in Richtung der Y-Achse schauen und die Translation um e damit wir den Augpunkt setzen... Verbesserung?

P = (left, right, top, bottom, zNear, zFar)

Hier hörts jetzt ganz auf. Wie soll ich denn bitte die Projektion mittels Rotation, Translation oder Skalierung ausdrücken? Zumal mir ja eigentlich die Werte left, right, top, bottom, zNear, zFar fehlen. Ich hab nur die Infrmation wie das Ansichtsvolumen aussieht. Jemand da ne Idee wie man das umsetzen würde?


c) Schreiben Sie die Matrizen aus b) komponentenweise auf.

M =
T (1 0 0 c1
0 1 0 c2
0 0 1 c3
0 0 0 1 )

*

Rz (cos(-45) -sin(-45) 0 0
sin(-45) cos(-45) 0 0
0 0 1 0
0 0 0 1)

S (3 0 0 0
0 2 0 0
0 0 1 0
0 0 0 1)

Selbes für die V Matrix mit den entsprechenden Komponenten...

Tja und für die P Matrix wär es dann wohl diese hier http://wiki.delphigl.com/index.php/glFrustum
Bin mir ja aber sowieso überhaupt nicht sicher bei der Projektsionsmatrix .. da bräuchte ich dringend Hilfe....

d) Schreiben Sie alle OpenGL Befehle auf, die die beschriebene Szene rendert.

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(left, right, bottom, top, zNear, zFar);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(e1, e2, e3, 0, 1, 0, 0, 0, 1)
glPushMatrix();
glTranslatef(c1, c2, c3);
glRotatef(-45.0f, 0, 0, 1);
glScalef(3.0f, 2.0f, 1.0f);
quad();
glPopMatrix();


Das wär mein Ansatz gewesen ... bitte um Verbesserung!

Ich hoffe es gibt überhaupt welche die sich die Mühe machen das durchzulesen und nachzuvollziehen, denn es ist doch sehr theoretisch. Ich wär sehr dankbar und freue mich über jeden Tipp oder Verbesserung.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.025s | 17 Queries | GZIP : On ]