![]() |
[Rotationsmatrix] nacheinander Drehung
Hey
Also ich habe nen Vektor (x,y,z) und ne Drehmatrix, zb um y
Delphi-Quellcode:
so nun fahre ich so weiter:
type
TVek3d=record x,y,z:real; end; type TMatrix33=record sp1,sp2,sp3:TVek3d; end; //... function RotMatY(alpha: Real):TMatrix33; begin result := CreateMat( cos(alpha) ,0.0 ,-sin(alpha), 0.0 ,1.0 ,0.0, sin(alpha) ,0.0 ,cos(alpha) ); end; ich erstelle eine matrix mit der function matrix1:=RotMatY(65) dann multipliziere ich den vektor mit der matrix , den dabei enstanden Vektor zeichne ich. Klappt auch alles aber wie kann ich eine nacheinander Drehung um die 3 Achsen machen, also 30° um x, 10° um y und 124° um z ?? |
Re: [Rotationsmatrix] nacheinander Drehung
Hi.
Wie für die Rotation um die Y-Achse, so gibt es auch Rotationsmatrizen für die beiden anderen Achsen:
Code:
Durch Multiplikation der Matrizen werden die einzelnen Rotationen in einer Matrix kombiniert. Das gilt übrigens für alle Transformationsarten (Translation, Shearing, Scaling).
Rotation um die z-Achse
cos(a) -sin(a) 0 sin(a) cos(a) 0 0 0 1 Rotation um die x-Achse 1 0 0 0 cos(a) -sin(a) 0 sin(a) cos(a) Grüße vom marabu |
Re: [Rotationsmatrix] nacheinander Drehung
ja für Rotation um X und Z Achse hab ich auch Funktionen.
Also muss ich wenn ich rotieren und skalieren will, nur die Rotationsmatrix * Skalierungsmatrix und die resultierende Matrix*Vektor rechnen?? |
Re: [Rotationsmatrix] nacheinander Drehung
Richtig - durch die Vorberechnung komplexer Transformationen wird dann wertvolle Rechenzeit gespart. Im Win32 SDK, der bei Delphi Installation an Bord ist, kannst du einiges zu Koordinaten-Räumen und Transformationen lesen, wenn du mit dem Thema noch nicht so vertraut sein solltest.
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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