Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Rotationsmatrix] nacheinander Drehung (https://www.delphipraxis.net/69325-%5Brotationsmatrix%5D-nacheinander-drehung.html)

chaoslion 13. Mai 2006 15:59


[Rotationsmatrix] nacheinander Drehung
 
Hey

Also ich habe nen Vektor (x,y,z) und ne Drehmatrix, zb um y
Delphi-Quellcode:
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;
so nun fahre ich so weiter:
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 ??

marabu 13. Mai 2006 16:27

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:
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)
Durch Multiplikation der Matrizen werden die einzelnen Rotationen in einer Matrix kombiniert. Das gilt übrigens für alle Transformationsarten (Translation, Shearing, Scaling).

Grüße vom marabu

chaoslion 13. Mai 2006 17:59

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??

marabu 13. Mai 2006 20:29

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