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

Aktuelle Zeit: So Jul 20, 2025 00:37

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Matrix erstellen
BeitragVerfasst: Sa Dez 15, 2007 03:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
Hi!

Ich hab mal wieder ein Matrizen-Problem. Irgendwie mag ich die nicht ;)
Und zwar möchte ich eine Matrix erstellen, die einerseits eine Translation enthält (W-Spalte, klar) und andererseits die Y-Achse so hin dreht, dass sie von Punkt A nach Punkt B zeigt. Wo die anderen Achsen landen, ist mir relativ egal, da ich nur entlang der Y-Achse eine Quadrik rendern will.
Ich hab mir dann überlegt, dass man folgendes machen könnte:
Zitat:
vY = B-A
vX = (1, (vY.Z + vY.Z) / vY.Y, 1); // irgendein vX _|_ vY
vZ = vX x vY // vX kreuz vY = Normale->vZ
Matrix = (Norm(vX), Norm(vY), Norm(vZ), A);


Funktioniert das so? Wenn ich keinen Denkfehler hab, müsste es doch passen, oder? Eigentlich müssten alle Vektoren Senkrecht zueinander sein...

Irgendein Fehler muss da aber sein, denn wenn ich später dieses mache:
Code:
  1.     glLoadMatrixf(@(T^.M));
  2.  
  3.     SetGLMaterial3(0.5,0.5,0.2);
  4.     gluCylinder(q,0.5/(L+1),0.3/(L+1),T^.L,5,1);

..., dann wird nichts gerendert. Beziehungsweise vielleicht ja doch, aber nicht da wo es hingehören würde. Die Matrix an sich stimmt aber, das hab ich nachgerechnet. Auch wenn der als Identity eine um 45° um Y gedrehte rauskriegt, aber wie gesagt, Drehung um (Lokal-)Y ist mir völlig egal...

Wo ist hier der Wurm? Ich war so froh, mal selbst auf was gekommen zu sein, und dann das :roll:

mfg
Martok

_________________
Gott sei Dank bin ich Atheist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 15, 2007 18:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
Ok. Bäume, Wälder und Kameras. Oder so ;)

Das konnte so nicht klappen, da ich die Kameratransformation mit glLoadMatrix überschrieben habe.

Code:
  1. vZ:= Vector(T^.P2[0]-T^.P1[0],T^.P2[1]-T^.P1[1],T^.P2[2]-T^.P1[2],T^.P2[3]-T^.P1[3]);
  2. vX:= Vector(vZ[1], -vZ[0], 0); // irgendein vX _|_ vZ
  3. vY:= VectorCrossProduct(vZ,vX);  // vX kreuz vZ = Normale->vY
  4. T^.M := Matrix(VectorNormalize(vX), VectorNormalize(vY), VectorNormalize(vZ), T^.P1);

Diesen Code verwende ich jetzt, nachdem ich festgestellt hab, dass sich Quadriken entlang der Z-Achse rendern. Außerdem ist damit ist vX auf die XY-Ebene festgenagelt, macht die Sache etwas einfacher zu debuggen.

_________________
Gott sei Dank bin ich Atheist!


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 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 | 14 Queries | GZIP : On ]