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

Aktuelle Zeit: Fr Jul 18, 2025 07:27

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Mär 11, 2007 13:46 
Offline
DGL Member

Registriert: Do Jun 22, 2006 19:13
Beiträge: 52
Wohnort: Lübeck
Hallo zusammen !!!

Ich habe ein grundliegendes Problem bei der Berechnung einer Transformationsmatrix.
Ich brauch da echt Hilfe.

Ich habe folgende Anleitung, weiß aber nicht wie ich das berechnen soll:

Erstellen einer Transformationsmatrix:

Benötigten Werte der Kamera:
• Up-Vektor (Up)
• Sichtvektor (Dir)
• Kameraposition (P)

Mit den aus dem Kameramodell gewonnenen Größen lassen sich die Vektoren
~u, ~v, ~w und ~p wie folgt berechnen:
~u =Up × -Dir = Dir × Up
~w = -Dir
~v =w × u
~p =P

Nun kamm man die Transformationsmatrix berechnen:
|ux uy uz - ~u * ~p|
T = |vx vy vz - ~v * ~p|
|wx wy wz - ~w * ~p|
|0 0 0 1 |

Nun meine Bitte:
Kann mir mal jemand den kompletten Rechenweg aufschreiben wie man T berechnet
(was muss addiert und was multipliziert werden usw....)

Dies sind die Werte für die Kamera:
UP-Vektor:
Ux = 0
Vy = 1
Uz = 0

Sicht-Vector:
Vx = 1000
Vy = 250
Vz = -100

Kameraposition:
Wx = 1000
Wy = 250
Wz = 500

Jetzt schon mal Vielen Dank !!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 11, 2007 14:05 
Offline
DGL Member

Registriert: Do Jun 22, 2006 19:13
Beiträge: 52
Wohnort: Lübeck
Geht das in die richtige Richtung ???

Code:
  1.  
  2. var
  3.   MatrixT: TGLMatrixd4;
  4. begin
  5.   MatrixT[0, 0] := 0;
  6.   MatrixT[0, 1] := 1;
  7.   MatrixT[0, 2] := 0;
  8.   MatrixT[0, 3] := ;    //  ????????
  9.  
  10.   MatrixT[1, 0] := 1000;
  11.   MatrixT[1, 1] := 250;
  12.   MatrixT[1, 2] := -100;
  13.   MatrixT[1, 3] := ;    //  ????????
  14.  
  15.   MatrixT[2, 0] := 1000;
  16.   MatrixT[2, 1] := 250;
  17.   MatrixT[2, 2] := 500;
  18.   MatrixT[2, 3] :=      //  ????????
  19.  
  20.   MatrixT[3, 0] := 0;
  21.   MatrixT[3, 1] := 0;
  22.   MatrixT[3, 2] := 0;
  23.   MatrixT[3, 3] := 1;
  24. end;
  25.  
  26.  

Falls das soweit richtig sein sollte, so brauche ich Hilfe an den // ???????? Stellen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 24, 2007 18:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mai 23, 2007 10:56
Beiträge: 6
Wohnort: Braunschweig
Warum benutzt Du nicht einfach gluLookAt? Es gibt keinen Grund
das von Hand auszurechnen ;)

Falls Du die Matrix wirklich für weitere Berechnungen
brauchst , kannst Du sie so ermitteln:

GLfloat Mat[16];
glLoadIdentity();

gluLookAt(Standortx, Standorty, Standortz, // Standort der Kamera
Vispoint.x, Vispointy, Vispointz, // anvisierter Punkt
Upvector.x, Upvectory, Upvectorz); // Vektor, der "oben" angibt

glGetFloatv(GL_MODELVIEW_MATRIX, Mat);

(Sorry, dass ich hier C-Code gepostet habe)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 24, 2007 20:19 
Offline
DGL Member

Registriert: Mi Mai 23, 2007 09:12
Beiträge: 4
Zitat:
Mit den aus dem Kameramodell gewonnenen Größen lassen sich die Vektoren
~u, ~v, ~w und ~p wie folgt berechnen:
~u =Up × -Dir = Dir × Up
~w = -Dir
~v =w × u
~p =P


Falls Du es zu Fuß machen willst, müsste es wie folgt gehen:

~u = Dir × Up
=> Vektorprodukt oder Kreuzprodukt, es ergeben sich folgende Koordinaten für ~u:
~u_x = Dir_y * Up_z - Dir_z * Up_y
~u_y = -Dir_x * Up_z + Dir_z * Up_x
~u_z = Dir_x * Up_y - Dir_y * Up_z

~w = -Dir und ~p =P sollte klar sein

~v =w × u ebenos wie ~u:

~v_x = w_y * u_z - w_z * u_y
~v_y = -w_x * u_z + w_z * u_x
~v_z = w_x * u_y - w_y * u_z


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.007s | 15 Queries | GZIP : On ]