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

Aktuelle Zeit: Fr Jul 18, 2025 08:44

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Achsen ausrichten
BeitragVerfasst: Mi Jun 04, 2008 13:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 09, 2005 13:48
Beiträge: 117
Wohnort: Sankt Augustin
Hallo,

ich möchte meine Szene über beliebige Achsen ausrichten können ohne die Lage der anderen Achsen zu verändern. Dazu habe ich mir gedacht, dass ich die Winkel zwischen den Achsen der Rotationsmatrix und den Achsen der inversen Rotationsmatrix errechne und dann jeweils um diesen Betrag verschiebe. Leider klappt das so nicht.

Ich möchte die Achsen eweils in die Waagerechte bringen (bei Y natürlich in die horizontale). glLoadidentity hilft auch nicht, da ich dann immer in der Ausgangslage bin.

Falls mir jemand helfen kann ...

Danke,

Andree


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 04, 2008 14:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hi,
eigentlich sollten die Spalten der Rotationsmatrix genau den gedrehten Achsenkreuz-Vektoren entsprechen.
Demnach musst du nur mit der Inversen Rotationsmatrix multiplizieren (sprich deine Rotation rückgängig machen) und dann mit deiner neuen Rotationsmatrix multiplizieren, die die neue Lage der Szene beschreibt.
Eigentlich kannst du ja auch glPushMatrix / glPopMatrix verwenden.

Aber ich habe dich vllt nicht richtig verstanden...

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Neuer Versuch ...
BeitragVerfasst: Mi Jun 04, 2008 17:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 09, 2005 13:48
Beiträge: 117
Wohnort: Sankt Augustin
Ich habe mich wahrscheinlich nicht genau genug ausgedrückt.

Hier ein neuer Versuch:

Ich gehe von der Identitätsmatrix aus.
Wenn ich eine Szene um beliebige Achsen um beliebige Grade drehe möchte ich in der Lage sein z.B. die X-Achse in die Waagerechte zu bringen. Die Lage der anderen Achsen soll dabei nicht verändert werden. Diese Ausrichtung soll am Koordinatenkreuz des Bildschirms vorgenommen werden.

Wenn ich das Verfahren mit der inversen Rotationsmatrix wähle, wird die X-Achse und die Z-Achse ausgerichtet. Ich möchte aber nur die OpenGL-Szene soweit aufrichten, dass die X-Achse, die z.B. um 45° noch hinten zeigt auch nach der Ausrichtung noch um 45° nach hinten zeigt, aber waagerecht am Bildschirm steht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 04, 2008 17:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Verstehe ich dich richtig, dass du versuchen willst, eine Achse unabhängig von den beiden anderen zu "verschieben"? Das wird wohl kaum möglich sein, oder täusche ich mich da? Schließlich ist es doch quasi in der Definition der Achsen, dass sie Senkrecht zueinander stehen

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 04, 2008 17:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Achsen eines Koordinatensystems verschieben ist wirklich nicht drin, das sind Richtungsvektoren. Richtung des Vektors = Richtung der Achse, Länge des Vektors = Länge einer Einheit in dem Koordinatensystem auf der Achse.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: habe die lösung
BeitragVerfasst: Do Jun 05, 2008 08:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 09, 2005 13:48
Beiträge: 117
Wohnort: Sankt Augustin
Sorry,

hatte mich total verrannt. Ich brauche gar keine inverse Matrix oder sonstwelche Hilfsmittel.

Ich nehme die Ausrichtung der Rotationsmatrix, z.B. für die X-Achse.
Dann setze ich Y dieses Vektors auf Null.
Mit der Ausrichtung der X-Achse und dem in der Höhe waagerecht gelegten Vektor errechne ich den Winkel zwischen diesen Beiden.
Zum Schluss ein glRotated (ErrechneterWinkel, 0, 0, 1) und die Achse liegt waagerecht.

Damit habe ich OpenGL die Arbeit machen lassen und alles ist schön konsistent im System.


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot] und 17 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]