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

Drehwinkel für Rotationsmatrix bestimmen

 

D-RSPhoenix
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2012, 12:48     Titel: Drehwinkel für Rotationsmatrix bestimmen
  Antworten mit Zitat      
Hallo,

Ich habe mal wieder ein Problem bei dem ich nicht weiter komme ;/
Ich habe den Normalenvektor einer Ebenen, diese Ebene möchte ich jetzt mittels einer Rotationsmatrix so drehen, dass sie parallel zur XY-Ebene steht.
Wie bekomme ich die Winkel meiner Rotationsmatrix hierfür heraus?

Könnt ihr mir da weiterhelfen?

Grüße
D-RSPhoenix
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 01.08.2012, 06:18     Titel:
  Antworten mit Zitat      
Hey,

schau dir mal folgende Seite an:

http://www.mathworks.com/matlabcent.....tation-about-shifted-axis
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 01.08.2012, 09:08     Titel:
  Antworten mit Zitat      
Hallo,

meinst du parallel oder senkrecht zur xy-Ebene? Falls du ersteres meinst, so ist dieses Problem keinesfalls eindeutig.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
D-RSPhoenix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2012, 10:24     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Hallo,

meinst du parallel oder senkrecht zur xy-Ebene? Falls du ersteres meinst, so ist dieses Problem keinesfalls eindeutig.

Grüße, Marc


ist mir beides recht, da die Parallelität ja problemlos aus der Rechtwinkligkeit abgeleitet werden kann (einfach um weitere 90grad drehen)
Private Nachricht senden Benutzer-Profile anzeigen
 
D-RSPhoenix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2012, 10:29     Titel:
  Antworten mit Zitat      
Goofy9020 hat Folgendes geschrieben:
Hey,

schau dir mal folgende Seite an:

http://www.mathworks.com/matlabcent.....tation-about-shifted-axis


hm das bringt mir leider nichts, da bei dieser Funktion der Winkel angeben werden muss. Ich suche eben diesen Winkel.
Ich will raus bekommen um welche Achsen ich mit wie viel Grad rotieren muss damit meine Ebene parallel zur xy-Ebene wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 01.08.2012, 10:37     Titel:
  Antworten mit Zitat      
Sry war der falsche Link,

hier unter der Verwendung von AxelRot:

Code:

xyz=eye(3); %fake data, points on the unit simplex

centroid=mean(xyz,1),

w = cross(xyz(2,:)-xyz(1,:),xyz(3,:)-xyz(1,:)); %normal to plane

rotAngle = acosd(w(3)/norm(w)); %rotation angle
rotAxis= cross(w,[0,0,1]); %rotation axis

M=AxelRot(rotAngle,rotAxis,centroid);

xyz_new_homogeneous=([xyz,[1; 1; 1]])*M.';

xyz_new=xyz_new_homogeneous(:,1:3),
 
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 01.08.2012, 10:51     Titel:
  Antworten mit Zitat      
D-RSPhoenix hat Folgendes geschrieben:
MaFam hat Folgendes geschrieben:
Hallo,

meinst du parallel oder senkrecht zur xy-Ebene? Falls du ersteres meinst, so ist dieses Problem keinesfalls eindeutig.

Grüße, Marc


ist mir beides recht, da die Parallelität ja problemlos aus der Rechtwinkligkeit abgeleitet werden kann (einfach um weitere 90grad drehen)


Nochmals: Das Problem ist nicht eindeutig lösbar. Es gibt unendlich viele Möglichkeiten, den Normalenvektor in die Ebene zu rotieren. Wie wäre es mit einer Projektion in die Ebene? Das wäre eindeutig.
Private Nachricht senden Benutzer-Profile anzeigen
 
D-RSPhoenix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2012, 12:05     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
D-RSPhoenix hat Folgendes geschrieben:
MaFam hat Folgendes geschrieben:
Hallo,

meinst du parallel oder senkrecht zur xy-Ebene? Falls du ersteres meinst, so ist dieses Problem keinesfalls eindeutig.

Grüße, Marc


ist mir beides recht, da die Parallelität ja problemlos aus der Rechtwinkligkeit abgeleitet werden kann (einfach um weitere 90grad drehen)


Nochmals: Das Problem ist nicht eindeutig lösbar. Es gibt unendlich viele Möglichkeiten, den Normalenvektor in die Ebene zu rotieren. Wie wäre es mit einer Projektion in die Ebene? Das wäre eindeutig.


was bringt mir eine Projektion?
Und theoretisch brauch ich auch keine eindeutige Lösung irgendeine würde mir schon reichen ;P
da muss doch irgendwas gehen
würde es irgendwas bringen wenn ich noch einen zweiten Normalenvektor einer zweiten Ebene hätte die senkrecht auf die erste steht? Die ebene müsste dann quasi parallel zur xz- oder yz-Ebene werden
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 01.08.2012, 12:16     Titel:
  Antworten mit Zitat      
hast du es denn mit dem Code schon probiert?

Code:
xyz=eye(3); %fake data, points on the unit simplex

centroid=mean(xyz,1),

w = cross(xyz(2,:)-xyz(1,:),xyz(3,:)-xyz(1,:)); %normal to plane

rotAngle = acosd(w(3)/norm(w)); %rotation angle
rotAxis= cross(w,[0,0,1]); %rotation axis

M=AxelRot(rotAngle,rotAxis,centroid);

xyz_new_homogeneous=([xyz,[1; 1; 1]])*M.';

xyz_new=xyz_new_homogeneous(:,1:3),
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 01.08.2012, 12:36     Titel:
  Antworten mit Zitat      
Man muss eine mögliche Lösung vorher skizzieren, bevor man irgendeinen Code verwendet.

Möglichkeiten, einen Vektor in eine Ebene zu rotieren:

1. Projektion des Vektors in die Ebene
2. Irgendeinen der beiden Richtungsvektoren der Ebene nehmen
3. Irgendeine Linearkombination der beiden Richtungsvektoren der Ebene nehmen

Was man hier aber keineswegs braucht, sind irgendwelche Drehmatrizen.

Zuletzt bearbeitet von MaFam am 01.08.2012, 12:45, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 01.08.2012, 12:40     Titel:
  Antworten mit Zitat      
Wenn ich einen Normalenvektor einer Ebene habe (x,y,z), zur Vereinfachung im Ursprung, und dann den Winkel zwischen diesen und einen Vektor (0,0,1) (Vektor schaut nur in die z- Richtung) berechnen und um diesen Winkel dann rotiere sollte ich ja die Ebene dann parallel zur z Achse ausgerichtet haben oder bin ich komplett daneben?
Private Nachricht senden Benutzer-Profile anzeigen
 
D-RSPhoenix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2012, 13:14     Titel:
  Antworten mit Zitat      
Goofy9020 hat Folgendes geschrieben:
hast du es denn mit dem Code schon probiert?

Code:
xyz=eye(3); %fake data, points on the unit simplex

centroid=mean(xyz,1),

w = cross(xyz(2,:)-xyz(1,:),xyz(3,:)-xyz(1,:)); %normal to plane

rotAngle = acosd(w(3)/norm(w)); %rotation angle
rotAxis= cross(w,[0,0,1]); %rotation axis

M=AxelRot(rotAngle,rotAxis,centroid);

xyz_new_homogeneous=([xyz,[1; 1; 1]])*M.';

xyz_new=xyz_new_homogeneous(:,1:3),


Hi
öhm ich bin grad bissel überfragt was soll dieser centroid? für den brauch ich ja dann punkte auf der Ebene, das ist jetzt erstmal kein Problem an die komm ich im Notfall ran aber für was brauch ich den? Weil bei einer unendlichen Ebene macht der centroid doch gar keinen Sinn oder versteh ich das falsch?
eigentlich würde mir der Rotationswinkel ja schon reichen aber ich nehme an der bezieht sich auf die Rotationsachse welche ich nur mir dieser AxelRot-Funktion verarbeiten kann
Private Nachricht senden Benutzer-Profile anzeigen
 
D-RSPhoenix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2012, 13:53     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Man muss eine mögliche Lösung vorher skizzieren, bevor man irgendeinen Code verwendet.

Möglichkeiten, einen Vektor in eine Ebene zu rotieren:

1. Projektion des Vektors in die Ebene
2. Irgendeinen der beiden Richtungsvektoren der Ebene nehmen
3. Irgendeine Linearkombination der beiden Richtungsvektoren der Ebene nehmen

Was man hier aber keineswegs braucht, sind irgendwelche Drehmatrizen.


hm das Problem, das ich habe ist, dass ich eben eine solche Matrix brauche, denn was ich eigentlich tun will ist die Drehung eines Quaders im Raum festzustellen um ihn dann mit der ihn umgebenden Puntkwolke so zu drehen, dass der Quader danach achsparallel ist.
Achsparallel bedeute, dass alle Kanten parallel zu einer Koordinatenachse sind.
Den Quader habe ich anhand der 6 Normalenvektoren seiner Ebenen gegeben.

Also wenn du so willst habe ich quasi ein quaderfestes Koordinatensystem mit dem Ursprung in einer Quaderecke und 3 Vektoren die senkrecht aufeinander stehen. Für dieses Koordinatensystem brauche ich jetzt die Drehwinkel um es mit einer Rotationsmatrix in die Ausrichtung des erdfesten Koordinatensystem zu drehen. (keine Verschiebung des Ursprungs des quaderfesten Koordinatensystems)
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 01.08.2012, 13:55     Titel:
  Antworten mit Zitat      
Goofy9020 hat Folgendes geschrieben:
Wenn ich einen Normalenvektor einer Ebene habe (x,y,z), zur Vereinfachung im Ursprung, und dann den Winkel zwischen diesen und einen Vektor (0,0,1) (Vektor schaut nur in die z- Richtung) berechnen und um diesen Winkel dann rotiere sollte ich ja die Ebene dann parallel zur z Achse ausgerichtet haben oder bin ich komplett daneben?


Nein, du bist natürlich nicht komplett daneben. Wenn man allerdings den Ausgangsvektor hin zu (0,0,1) rotiert hat, ist dieser immer noch nicht parallel zur xy-Ebene. Man muss dann immer noch einen senkrechten Vektor dazu finden, was wieder ein nicht eindeutiges Problem ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
D-RSPhoenix
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 31.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2012, 08:42     Titel:
  Antworten mit Zitat      
hm keiner mehr Ideen/Anregungen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

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.