Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Winkel zwischen Vektor und Koordinatensystem

Winkel zwischen Vektor und Koordinatensystem

Universität / Fachhochschule

Tags: Koordinatensystem, Vektor, Winkel

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
axxl79

axxl79 aktiv_icon

20:44 Uhr, 23.05.2016

Antworten
Hallo Zusammen,

ich hoffe ihr könnt mir bei meinem Problem helfen.

Ich habe schon lange nichts mehr mit Vektoren zu tun gehabt und möchte jetzt in excel die Winkel zwischen einem Vektor und den Ebenen eines KOS berechnen.

Hintergrund: Ich schreibe gerade ein Skript, das mir einen Körper in einem Programm automatisch im Raum positioniert.Der Körper wird durch 2 Punkte dargestellt von denen ich die Koordinaten kenne. Ich brauche jetzt für das Skript als Input die Translationen und Rotationen von dem Vektor der meinen Körper darstellt zu dem globalen KOS.

Mein Lösungsansatz:

Translation: x'-x,y'-y und z'-z dann befindet sich mein Vektor im globalen KOS.

Nun zum Problem:
Rotation: Ich habe versucht den Winkel über die Formel arccos(a*b/|a|*|b|) zu berechnen, aber hier ist der max. Winkel 180°. Ich brauche aber die Rotation von 0-360°.

Ist es möglich das irgendwie ohne Fallunterscheidung (nach Quadranten) hinzubekommen?

Ich bin auch schon öfter über die Formel zur Koordinatentransformation gestolpert, aber dafür muss man ja den Winkel kennen und ich weiß nicht ob/wie man das umstellen kann um die Winkel zu erhalten.

Vielen Dank im Voraus,
Gruß Alex

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Hierzu passend bei OnlineMathe:

Online-Übungen (Übungsaufgaben) bei unterricht.de:
 
Online-Nachhilfe in Mathematik
Antwort
Werner-Salomon

Werner-Salomon aktiv_icon

09:36 Uhr, 24.05.2016

Antworten
Hallo Alex,

in den meisten Programmiersprachen und auch in Excel gibt es die Funktion arctan2, die zwei Parameter aufnimmt, die ein Vielfaches des Sinus- und Cosinuswertes des gesuchten Winkels sind. Das Ergebnis ist i.A. ein Winkel im Intervall von (-π;π].
In Excel ist es ARCTAN2(x,y) wobei x=f*COS(Winkel) und y=f*SIN(Winkel) ist. f ist ein beliebiger Faktor - z.B. ab. Den Sinus erhältst Du i.A. über ein Kreuzprodukt.
s.: de.wikipedia.org/wiki/Arkustangens_und_Arkuskotangens#atan2

Du schreibst: "Ich bin auch schon öfter über die Formel zur Koordinatentransformation gestolpert, aber dafür muss man ja den Winkel kennen und ich weiß nicht ob/wie man das umstellen kann um die Winkel zu erhalten."
Nein - man muss nicht immer die zugehörigen Winkel kennen. Wenn Du ausreichend viele Punkte der Körper im Raum bzw. in der Ebene kennst, kannst Du die Koordinatentransformation unmittelbar aus diesen Punkten ableiten.

Gruß
Werner
axxl79

axxl79 aktiv_icon

21:57 Uhr, 24.05.2016

Antworten
Hallo Werner,

vielen Dank erstmal für deine Antwort! Ich verstehe leider nicht ganz wie ich die Arctan2 Funktion für meinen Zweck verwenden kann. Wenn ich Beispielsweise die Drehung um die X-Achse wissen will für den Vektor (0,0,1) mit dem Excelbefehl: =GRAD(ARCTAN2(0;1))
dann erhalte ich den Winkel 90°, ausserdem (0° für Y und #DIV/0 für Z). Wenn ich nach gleichem Prinzip den Vektor (0,1,0) nehme und die Drehung um die Z-Achse wissen will erhalte ich wieder 90°, ausserdem (0° für X und #DIV/0 für Y). Analog der Winkel um Y... Ich habe aber einen feststehenden Körper der durch einen Vektor beispielsweise 0,0,1 dargestellt ist und möchte jetzt einen zweiten Vektor irgendwo im Raum definieren zu dem ich meinen Körper transformieren möchte.Dafür brauche ich aber die Translationen und Rotationen zwischen diesen beiden Vektoren. Habe ich die Funktion nur falsch verwendet, oder funktioniert das so nicht? Sorry, wenn ich mich bissl dumm anstelle, aber ich hab das Thema Vektoren in der Schul/Studienzeit leider immer vernachlässigt.

Du hast geschrieben: Nein - man muss nicht immer die zugehörigen Winkel kennen. Wenn Du ausreichend viele Punkte der Körper im Raum bzw. in der Ebene kennst, kannst Du die Koordinatentransformation unmittelbar aus diesen Punkten ableiten.

Kannst du mir dazu vielleicht noch mehr Infos oder Stichworte geben nach denen ich suchen kann?

Gruß Alex
Antwort
Werner-Salomon

Werner-Salomon aktiv_icon

23:38 Uhr, 24.05.2016

Antworten
Hallo Alex,

ich werde aus Deiner Beschreibung nicht schlau. Wie kommst Du zu den Werten x=0 und y=1, die Du in die ARCTAN2-Funktion eingesetzt hast?

Stichworte habe ich keine. Letztlich ist es 'nur' Lineare Algebra.
Kannst Du beschreiben, welche zwei Punkte im Raum gegeben sind. I.A. kann man mit zwei Punkten eine Lage eines Körpers im Raum nicht beschreiben.
Wie kommst Du zu den Koordinaten der Punkte? Nenne am besten konkrete Beispiele.

Gruß
Werner


axxl79

axxl79 aktiv_icon

20:53 Uhr, 25.05.2016

Antworten
Hallo Werner,

wie ich auf die Werte 0 und 1 gekommen bin sieht man vielleicht besser auf dem angehängten Bild. Es sind die Koordinaten des Vektors im lokalen KOS.

Ich brauche das ganze für ein FEM-Programm. Ich bekomme eine CAD-Geometrie von einem Bauteil, welches mit einem preprozessor (Programm zum Modellaufbau) in viele finite Elemente (z.B.mehrere 100 000)aufgeteilt wird. Dieses Bauteil wird in einer Textdatei gespeichert und jedes einzelne Element besteht (je nach Typ) aus einer Anzahl von Knoten (z.B. Tetraelement aus 4 Knoten). Dann habe ich einen rotationssymetrischen Stempel (deswegen brauche ich auch nur 2 Punkte um den Körper zu positionieren), den ich mit dem preprozessor an eine bestimmte Stelle positioniere und dann als extra datei abspeichere. Der Stempel ist z.B ein flacher Teller, der in der Mitte eine senkrechte Achse hat auf die ich eine Kraft oder Verschiebung aufbringe. Das Programm berechnet dann die Verformung und Spannungen, die der Stempel auf das Bauteil ausübt. Das Positionieren des Stempels ist sehr aufwendig wenn man z.B50 Punkte zu drücken hat. Der Solver (Berechnungsprogramm) bietet hier eine Lösung: Ich kann den Stempel der im Nullpunkt des KOS liegt mittels 3 Translationswerten und 3 Winkeln zu dem gewünschten Punkt positionieren. Die Koordinaten dafür bekomme ich aus dem Preprozessor. Dort wähle ich einfach die gewünschten Punkte direkt am Bauteil aus und speichere sie in einem Knotenset ab. Wenn ich das exportiere habe ich zu jedem Knoten die Koordinaten.
Damit habe ich also meinen Stempel der im Nullpunkt liegt (und dessen Hochachse z.B. in Z-Richtung zeigt, definiert durch die zwei Knoten 0,0,0,und 0,0,100) und einen von mir definierten Vektor durch zwei Knotenpunkte (z.B. 20,20,20 und 120,20,20). Jetzt müsste ich nur noch die Winkel berechnen können um viel Zeit beim positionieren zu sparen...

Gruß Alex

Stempelpositioinierung
Antwort
Werner-Salomon

Werner-Salomon aktiv_icon

23:00 Uhr, 25.05.2016

Antworten
Hallo Alex,

nach dem angehängten Bild berechnest Du den Winkel der Position (1,egal,0) im System ZX. Also Z bildet die lokale 1.Koordinate. Das sind natürlich 90Grad.
Ein Winkel um die X-Achse zu bestimmen, ist nicht möglich. Da dies ein Punkt im YZ-System wäre mit den Koordinaten Y=0, Z=0. Es existiert also kein Winkel.
Mir ist nicht klar, welche Winkel Du eigentlich berechnen möchtest.

Wenn Du einen Winkel zwischen zwei Vektoren a und b berechnen möchtest, so kannst Du dies mit ARCTAN2(Skalarprodukt(a,b); Betrag(Kreuzprodukt(a,b))) tun. Man muss nur aufpassen, dass man auch die 'richtigen' Vektoren nimmt, um z.B. die Eulerwinkel für eine Rotationsmatrix zu bestimmen.

Wenn Du die Möglichkeit hast, die Matrix direkt einzugeben, so kannst Du diese direkt aus Deinen zwei Punkten bestimmen. Angenommen pS ist die Position des Stempels und pG ist ein Punkt auf den der Stempelgriff zeigt. Diese Richtung sei die lokale Z-Achse des Stempels. Die 'Druckrichtung' ist dann -Z des Stempels - also in die Gegenrichtung.
dann bestimmst Du zunächst die lokale Z-Richtung a des Stempels mit
a=pG-pSpG-pS
Anschließend bestimmst Du einen Vektor, der senkrecht auf a steht und die Länge 1 hat. Dies sei der Vektor n der lokalen X-Richtung des Stempels.
Dazu wählt man die beiden absolut größten Koordinaten des Vektors a vertauscht diese und setzt eine der beiden auf ihren negativen Wert. Die dritte Koordinate wird zu 0 (Damit ist das Skalarprodukt =0). Anschließend wird der Vektor noch normiert indem man durch seinen Betrag teilt.
Der dritte Vektor o (die lokale Y-Richtung des Stempels) ist dann einfach das Kreuzprodukt
o=a×n

Die Rotationsmatrix wird erzeugt indem man die drei Vektoren n, o und a als die drei Spalten in die Rotationsmatrix überträgt.
Die Position bleibt pS.

Gruß
Werner



Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.