WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Cube rotieren mit Rotationsmatrix

 

sdie
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2020, 11:06     Titel: Cube rotieren mit Rotationsmatrix
  Antworten mit Zitat      
Hallo zusammen,
ich würde gerne einen Quader rotieren lassen. Die Daten stammen aus einer IMU-Aufzeichnung, die mit Quaternionen aufgenommen wurde. Diese habe ich in eine Rotationsmatrix umgewandelt und hoffe dadurch die Rotation des Körpers darstellen und erstmal visuell analysieren zu können.
Bisher habe ich den folgenden Code, der alles umwandelt und den Quader erstellt. Allerdings weiß ich leider nicht wie ich die Rotationsmatrizen R einfügen kann und habe deswegen erstmal eine beliebige.

Hat da jemand einen Tipp oder eine bessere Alternative, um vielleicht die Quaternionen direkt zu nutzen? Ich komme da leider nicht weiter...

Den ersten Teil zum Einlesen der Datei habe ich hier der Übersicht halber weg gelassen, da es sich nur um den folgenden Codeteil geht.

Code:
% quat = quaternion(w,x,y,z);

A = compact(quat);               % als Nx4 Matrix

%% Rotationsmatrizen bilden
R = quat2rotm(quat);          % diese Rotationsmatrizen sollen den Quader rotieren lassen

% Cube bilden
X = [0, 5, 5, 0
    0, 5, 5, 0
    0, 0, 0, 0
    0, 5, 5, 0
    5, 5, 5, 5
    5, 5, 0, 0] ;
Y = [0, 0, 2, 2
    0, 0, 2, 2
    0, 0, 2, 2
    0, 0, 0, 0
    0, 2, 2, 0
    2, 2, 2, 2] ;
Z = [0, 0, 0, 0
    1, 1, 1, 1
    0, 1, 1, 0
    0, 0, 1, 1
    0, 0, 1, 1
    0, 1, 1, 0] ;
C = {'blue' ;'red' ; 'green' ; 'yellow' ; 'magenta' ; 'cyan'};
figure
hold on
for i = 1:6
    patch(X(i,:), Y(i,:), Z(i,:),C{i}) ;   % creates the polygons in 3-D coordinates using X, Y, and Z. To view the polygons in a 3-D view, use the view(3) command. C determines the polygon colors.
end
axis square
view(3)
xlim([-5 5])
ylim([-5 5])
zlim([-5 5])        % until here it works like I want to

% Cube rotieren
for i = 1:length(t)
    R = [1 0 0 ;0 cos(t(i)) -sin(t(i)) ; 0 sin(t(i)) cos(t(i))] ;   % Here should be the rotation matrix R from above
    T = [X(:) Y(:) Z(:)]*R ;
    Xi = reshape(T(:,1),[],4) ;
    Yi = reshape(T(:,2),[],4) ;
    Zi = reshape(T(:,3),[],4) ;
    figure(1)
    hold on
    for j = 1:6
        patch(Xi(j,:), Yi(j,:), Zi(j,:),C{j}) ;
    end
    axis square
    view(3)
    xlim([-5 5])
    ylim([-5 5])
    zlim([-5 5])
    drawnow
    hold off
    clf
   
end
 


Ich würde mich freuen, wenn da jemand eine Idee oder Tipp hat!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.09.2020, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

ich bin mir nicht sicher, ob ich die Frage verstehe.

Wenn ich das richtig sehe, wird aus einer Nx4-Matrix von Quaternionen ein 3x3xN-Array von Rotationsmatrizen, d.h.

Code:
R_current = R(:,:,i);

und dann mit R_current weiter arbeiten.

Zitat:
eine bessere Alternative, um vielleicht die Quaternionen direkt zu nutzen?

Ich kenne mich mit Quaternionen nicht wirklich aus und weiß daher nicht, wie so eine "direkte Nutzung" aussehen würde.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
sdie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2020, 14:07     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort! Das war die Rätsels Lösung.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.