![]() |
Problem mit Rotationsmatrix
Morgen Leute,
in meinem Programm ist ein Blickpunkt im Raum immer fest(z.B mit Koordinaten (0,0,3)), drüben liegt ein 3D-Bauteil, aber der kann im Raum rotieren OHNE Translation (die Mitte des 3D-Bauteil liegt immer direkt auf dem Koordinatenursprung, also Position von diesem 3D-Objekt ist (0,0,0)). Meine Aufgabe: Abstände zwischen diesem Blickpunkt (0,0,3) und allen Punkten vom 3D-Bauteil NACH DER ROTATION zu berechnen! Wenn ich diesen 3D-Objekt zuerst um X-Achse um Winkel u, dann um Y-Achse um Winkel v, danach um Z-Achse um Winkel w drehe, um die neue Koordinaten von jedem Punkt des 3D-Objektes wieder zu berechnen, ist es ganz klar, folgende Rotationsmatrix zu verwenden (Multiplikation von Rotationsmatrix und Vektor des Punktes des rotierten 3D-Bauteils): R= |CwCv CwSvSu-SwCu CwSvCu+SwSu| |SwCv SwSvSu+CwCu SwSvCu-CwSu| |-Sv CvSu CvCu | (C:Cos S:Sin) Nun Problem ist: Ich möchte diesen 3D-Bauteil FEST machen, aber lasse ich den Blickpunkt (0,0,3) um X,Y,Z-Achse um bestimmt. Winkel rotieren zu GLEICHER WIRKUNG, also natürlich zu gleicher relativer Position zu 3D-Bauteil wie vorher, damit bleiben die Abstände zwichen diesem rotierten Blickpunkt und allen Punkten vom festen 3D-Bauteil GLEICH wie vorher: Blickpunkt (0,0,3) fest, 3D-Bauteil rotiert. Um die neue Koordinaten von rotiertem Blickpunkt nach Winkel u, v, w zu berechnen, brauche ich eine NEUE Rotationsmatrix, das ist ganz anders wie oben genannt. Meine Frage: wie bekomme ich diese neue Rotationsmatrix? Ein Bsp.: Blickpunkt (0,0,3) ist fest, 1) 3D-Bauteil rotiert zuerst um X-Achse um +30 Grad (im Gegenuhrzeigersinn) 2) dann um Y-Achse +60 Grad 3) am Ende um Z-Achse +45 Grad. Das entspricht folgende Rotation zu gleicher Wirkung (zu gleicher relativer Position): 3D-Bauteil ist fest, 1) Blickpunkt (0,0,3) rotiert zuerst um X-Acse um -30 Grad 2) dann um eine Achse um -60 Grad. (Der Richtungsvektor von dieser Achse ist (0,Wurzel 3,-1)) 3) anschließend rotiert der Blickpunkt um sich selbst um -45 Grad Das Problem sieht kompliziert aus, deshalb hätte ich gerne die Antwort oder Hinweise von euch Vielen Dank l.g Lee |
AW: Problem mit Rotationsmatrix
Ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber ist die gewünschte Matrix nicht das Inverse der von dir beschriebenen R-Matrix?
|
AW: Problem mit Rotationsmatrix
Danke für die Antwort,Raabe!
Ich möchte nun das Problem leicht machen, auf vorherigen Versuch möchte jetzt verzichten, also lieber neue Eckpunkte-Koordinaten aller Dreicken vom 3D-Bauteil direkt mit folgender Rotationsmatrix mal berechnen (Der 3D-Bauteil ist aus einer STL-Datei, die Koordinaten der Eckpunkte aller Dreiecken vom diesem 3D-Bauteil werden in dieser STL-Datei gespeichert). R= |CwCv CwSvSu-SwCu CwSvCu+SwSu| |SwCv SwSvSu+CwCu SwSvCu-CwSu| |-Sv CvSu CvCu | (C:Cos S:Sin) Nun eine Frage an euch: gibt es in GLScene solche Befehle, mit den ich mit der Rotationsmatrix (schon bekannt) die neuen Koordinaten der Eckpunkte aller Dreicken vom 3D-Bauteil (STL-Datei) direkt berechnen kann? PS: um die STL-Datei in GLScene zu laden und zu zeichnen, kann man folgende code verwenden GLFreeForm1.LoadFromFile(xxx.stl); GLFreeForm1.Scale.Scale(1); GLFreeForm1.Roll(0); GLFreeForm1.Turn(0); GLFreeForm1.Pitch(0); nochmals vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz