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

Aktuelle Zeit: Mi Jul 09, 2025 22:09

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Jul 08, 2006 17:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
In meinem aktuellen Projekt stellt sich mir folgendes Problem in den Weg:
Ich habe die Rotationswinkel eins Objekts gegeben, aber immer absolut (ist das der richtige Begriff?), also nicht in Bezug auf die Koordinatenachsen, die sich ja bei Rotation um die X-Achse (usw) schon verändern. Ich habe mir das theoretisch so zurechtgelegt:

1. Rotation um die X-Achse
2. Berechnen der ursprünglichen Y-Achse nach 1.
3. Rotation um die Achse aus 3.
4. Berechnen der ursprünglichen Z-Achse nach 1. und 3.
5. Rotation um die Achse aus 4.

2. habe ich so gelöst:
Code:
  1. function GetYVectorAfterXRotation(Rot_X: Single): Vector3f;
  2. begin
  3.  Result.x:= 0;
  4.  Result.y:= cos(DegToRad(Rot_X));
  5.  Result.z:= -Sin(DegToRad(Rot_X));
  6. end;


4. hätte ich so versucht, aber das geht nicht:
Code:
  1. function GetZVectorAfterXAndYRotation(Rot_X, Rot_Y: Single): Vector3f;
  2. begin
  3.  Result.x:= -sin(DegToRad(Rot_Y));
  4.  Result.y:= sin(DegToRad(180-Rot_X));
  5.  Result.z:= cos(DegToRad(Rot_X))*cos(DegToRad(Rot_Y));
  6. end;


... könnte mir da vielleicht jemand ne Lösung liefern und die optionalerweise auch gleich noch erklären? Wär echt toll!

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 08, 2006 20:55 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Falls du den Unterschied zwischen Rotation um gedrehte Achsen ähnlich wie bei Euler und das Yaw-Pitch-Roll mit den feststehenden Achsen meinst, dann sind das die selben Rotationsmatrizen nur in umgekehrter Reihenfolge angewandt. Also statt Rx*Ry*Rz dann Rz*Ry*Rx


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 09, 2006 11:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
LarsMiddendorf hat geschrieben:
Euler...Yaw-Pitch-Roll ...Rx*Ry*Rz dann Rz*Ry*Rx


Hmm ich versteh hier mal gar nix :shock:

Aber ich glaube, du meinst was Anderes. Ich versuch es nochmal, zu erklären: Wenn ich um die X-Achse drehe, dann werden ja auch die Y- und Z-Achse mitgedreht. Mit der obigen ersten Funktion berechne ich also die Y-Achse in der um die x-Achse "rotierten Welt", so wie sie vorher gewesen wäre, so dass ich dann die Rotation um die Y-Achse durchführen kann, wie wenn die x-Rotation nicht gewesen wäre. MIt der Y-Achse funzts ja schon recht gut, aber wenn ich dann die Z-Achse für die Z-Rotation berechnen will, dann haut meine zweite Funktion (siehe oben) nicht hin...

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 09, 2006 11:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ja dann muß man nur die Reihenfolge der Matrizen vertauschen.

Beispiel: Rotation um x Achse und dann um die gedrehte y Achse hier y' genannt

y = x * Rx * Ry'

Die Rotation um die gedrehte y Achse y' kann man ja auch schreiben als Ry' = Rx^-1 * Ry * Rx

das eingesetzt

y = x * Rx * Rx^-1 * Ry * Rx = x * Ry * Rx

Bei drei funktioniert das genauso.
Daran sieht man, dass sich nur die Reihenfolge der Rotationsmatrizen vertauscht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 09, 2006 12:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
OK, danke, jetzt versteh ich einigermaßen, werd mal versuchen, dass zu implementieren...

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


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


Wer ist online?

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