habe folgendes Problem:
Meine Aufgabe besteht darin, dass ich eine Ebene im 3d drehen kann.
Wobei ich die Ursprungsebene, Drehachse und Drehwinkel der Funktion als Parameter übergeben kann.
Habe bei der Drehung der an eine Drehmatrix / Rotationmatrix gedacht in wie fern ist dies möglich ?
Verfasst am: 16.08.2010, 13:36
Titel: Rotation um Achse
Hi,
probier mal den folgenden Code aus:
Code:
function V=rot3dvect(U,rotaxis,phi);
% rot3dvect % rotate points U by the angle phi around axis rotaxis
%
% V=rot3dvect(U,rotaxis,phi);
%
%
% U : real matrix with 3 rows and any column size. Each column contains one point. % 1st row = x, 2nd row = y, 3rd row = z.
%
% rotaxis : the rotation axis, defined by two points, which are combined in a 3 x 2 matrix. % Each column contains one point
%
% phi : a scalar, contining the rotation angle in radian.
%
% V : the points U after rotaion.
%
% Example: % U=eye(3,3); % Points on x-, y- and z-axis % rotaxis=[0,1;0,1;0,1]; % rotation axis through points [0;0;0] and [1;1;1] % V=rot3dvect(U,rotaxis,%pi); % rotate the three points by 180° around rotation axis.
%
U=[eye(3,3),ones(3,3)-eye(3,3)]% 6 Punkte (erste 3 auf x-, y- und z-Achse)
rotaxis=[0,1;0,1;0,1]% Rotationsachse durch Ursprung und [1;1;1]
V=rot3dvect(U,rotaxis,pi); % erste Rotation disp(V);
V2=rot3dvect(V,rotaxis,pi);
disp(V2);
disp(V2-U)% V2 müsste nun U sein
Danke dir Andreas aber der befehl rotaxis funktioniert nicht.
Hast du das Prog mal laufen lassen ?
Habe jetzt eine neue Mgl gefunden, das ganze ghet auch mit hgtranform ist aber noch nicht ganz ausgereift...
[/code]
mit der rotationmatrix haut es irgendwie nicht hin.
Wir sind jetzt aber auf den Befehl hgtransform und makehgtform gekommen damit klapt es. Mehr infos dazu findet man auf Mathworks.com
%Erstellung der Transformationsparameter
%Erstellung der Rotationsparameter
theta = 10.0;
psi = 10.0;
phi = -10.0;
%Erstellung des Translationsvektors
Tx = 10.0;
Ty = -10.0;
Tz = 10.0;
%Erstellung der Rotationsmatrix
%Drehung um die x-Achse => Winkel theta
TRx = [1,0,0;0,cos(theta*pi/180),-sin(theta*pi/180);0,sin(theta*pi/180),cos(theta*pi/180)];
%Drehung um die y-Achse => Winkel psi
TRy = [cos(psi*pi/180),0,sin(psi*pi/180);0,1,0;-sin(psi*pi/180),0,cos(psi*pi/180)];
%Drehung um die z-Achse => Winkel phi
TRz = [cos(phi*pi/180),-sin(phi*pi/180),0;sin(phi*pi/180),cos(phi*pi/180),0;0,0,1];
%Rotationsmatrix
TRxyz = TRz*TRy*TRx;
%Erstellung des Translationsvektros
TTxyz = [Tx;Ty;Tz];
%Erstellung der 4x4 Transformationsmatrix
Txyz = [TRxyz,TTxyz;0,0,0,1];
Die Transformation erfolgt dann halt nach dem Prinzip
TRxyz * Vektor + TTxyz
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.