![]() |
---|
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: und 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 . 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: Definition von Sinus, Kosinus und Tangens Einführung Funktionen Parallelverschiebung Rechnen mit Vektoren - Einführung Rechnen mit Vektoren - Fortgeschritten Definition von Sinus, Kosinus und Tangens Einführung Funktionen Parallelverschiebung Rechnen mit Vektoren - Einführung |
![]() |
![]() |
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. . 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 |
![]() |
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 mit dem Excelbefehl: =GRAD(ARCTAN2(0;1)) dann erhalte ich den Winkel 90°, ausserdem (0° für und #DIV/0 für . Wenn ich nach gleichem Prinzip den Vektor nehme und die Drehung um die Z-Achse wissen will erhalte ich wieder 90°, ausserdem (0° für und #DIV/0 für . Analog der Winkel um . Ich habe aber einen feststehenden Körper der durch einen Vektor beispielsweise 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 |
![]() |
Hallo Alex, ich werde aus Deiner Beschreibung nicht schlau. Wie kommst Du zu den Werten und , 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 |
![]() |
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 000)aufgeteilt wird. Dieses Bauteil wird in einer Textdatei gespeichert und jedes einzelne Element besteht (je nach Typ) aus einer Anzahl von Knoten . 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 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 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 . in Z-Richtung zeigt, definiert durch die zwei Knoten 0,0,0,und und einen von mir definierten Vektor durch zwei Knotenpunkte . und . Jetzt müsste ich nur noch die Winkel berechnen können um viel Zeit beim positionieren zu sparen... Gruß Alex |
![]() |
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 ist die Position des Stempels und 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 des Stempels mit Anschließend bestimmst Du einen Vektor, der senkrecht auf steht und die Länge 1 hat. Dies sei der Vektor der lokalen X-Richtung des Stempels. Dazu wählt man die beiden absolut größten Koordinaten des Vektors 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 (die lokale Y-Richtung des Stempels) ist dann einfach das Kreuzprodukt Die Rotationsmatrix wird erzeugt indem man die drei Vektoren , und als die drei Spalten in die Rotationsmatrix überträgt. Die Position bleibt . Gruß Werner |
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|