Vektorgeometrie Winkel berechnen

Erste Frage Aufrufe: 1344     Aktiv: 03.08.2020 um 09:00

0

Hallo,

mal angenommen ich habe ein Polygon in einem kartesischen Koordinatensystem, auf einer 2D Oberfläche, mit unterschiedlich langen Verbindungsstrecken.
In der Mitte des Polygons befindet sich eine Linie die immer waagerecht ist.

Ich möchte nun diese Linie an der längsten Verbindungsstrecke parallel ausrichten.
Ich will also wissen um wie viel Grad ich meine Linie neigen muss, damit diese Parallel zur längsten Verbindungsstrecke verläuft.

Hier mal ein Bild zum besseren Verständniss, was ich meine.

Die blaue, waagerechte Linie soll parallel zur roten Linie verlaufen.

 

In dem Fall könnte ich mit der Formel tan ^-1(x/y) den Steigungswinkel der roten Linie berechnen:

 

 

Aber wie kann ich das für jedes beliebige Polygon anwenden?

 

Edit: Hier mal ein konkretes Beispiel:

 

Diese Frage melden
gefragt

Punkte: 12

 

Wie identifizierst du die längste Seite des Polygons? Wenn du die Koordinaten der Ecken hast, ist das doch recht einfach und dann wendest du den Tangens an - passt :-)   ─   mathe.study 22.07.2020 um 23:24

Die längste Seite ermittele ich, indem ich alle Punkte durchgehe und die Strecke zwischen denen vergleiche. Für die Winkel dachte ich, dass ich hier den Winkel zwischen zwei Vektoren berechnen muss.   ─   julmdama 23.07.2020 um 22:31
Kommentar schreiben
1 Antwort
0
Wenn du die Punkte gegben hast, dann kannst du ja wie du sagst den Vektor zwischen diesen Punkten bestimmen und dann den Winkel zwischen Vektor und dem Vektor der die Achse beschreibt berechnen. Beispielsweise mit dem Skalarprodukt. Wenn du den Winkel hast, kannst du die Drehung durch eine Drehmatrix beschreiben und so das Polygon drehen.
Diese Antwort melden
geantwortet

Sonstiger Berufsstatus, Punkte: 29.81K

 

Ich habe leider die Koordinaten der Achse nicht aber den Rest. Ich komme aber leider nicht auf das richtige Ergebnis. Ich editiere mal ein konkretes Beispiel in meine Frage.

Die einzige Information die ich noch habe ist der Mittelpunkt des Polygons. Ist es dann trotzdem noch möglich den richtigen Winkel zu berechnen. Momentan kommt bei mir 0.123 Grad raus, wenn ich den Winkel zwischen dem Punkt a und dem Mittelpunkt berechne. Was ja nicht sein kann, da dieser etwa 90 Grad betragen müsste, um meine imaginäre Linie an der Länngsten Linie auszurichten, also zwischen Punkt a und b.
  ─   julmdama 01.08.2020 um 17:19

Für die Achse kannst du ja einfach den Einheitsvektor der entsprechenden Achse nehmen.
Den Wiinkel über das Skalarprodukt erhält man durch
$$ \cos(\varphi ) = \frac {\vec{a} \cdot \vec{b}} {|\vec{a}| \cdot |\vec{b}|} $$
nun ist ein Vektor der Verbindungsvektor der längsten Seite
$$ \vec{a} = \begin{pmatrix} 385.7153 \\ 295.0835 \end{pmatrix} - \begin{pmatrix} 385.7153 \\ 293.0835 \end{pmatrix} = \begin{pmatrix} 0 \\ 2 \end{pmatrix} $$
Der Einheitsvektor der \(x\)-Achse lautet
$$ \vec{b} = \begin{pmatrix} 1 \\ 0 \end{pmatrix} $$
Wir sehen bereits durch
$$ \vec{a} \cdot \vec{b} = \begin{pmatrix} 0 \\ 2 \end{pmatrix} \cdot \begin{pmatrix} 1 \\ 0 \end{pmatrix} = 0\cdot 1 + 2 \cdot 0 = 0 $$
das die beiden Vektoren einen Winkel von \( 90^\circ \) haben, ansonsten würde das Skalarprodukt nicht Null werden.
Bei einem anderen Ergebnis würden wir noch die Länge von \( \vec{a} \) bestimmen. Die Länge eines Einheitsvektors ist natürlich immer \( 1 \), deshalb bräuchten wir die Länge von \( \vec{b} \) nicht berechnen.
Dann setzen wir alles in die obige Formel ein und erhalten so den entsprechenden Winkel.

Jetzt wo wir den Winkel haben, nehmen wir die Drehmatrix des \( \mathbb{R}^2 \)
$$ \begin{pmatrix} \cos(\varphi ) & - \sin(\varphi ) \\ \sin(\varphi ) & \cos(\varphi ) \end{pmatrix} $$
und setzen den Winkel ein. Wir können jeden Eckpunkt mit dieser Matrix multiplizieren und erhalten das neue gedrehte Polygon :)
  ─   christian_strack 01.08.2020 um 19:22

Ah super, funktioniert sehr gut, danke für die Hilfe!   ─   julmdama 02.08.2020 um 19:28

Sehr gerne :)   ─   christian_strack 03.08.2020 um 09:00

Kommentar schreiben