Vektorgeometrie Winkel berechnen

Aufrufe: 190     Aktiv: vor 1 Woche, 5 Tage

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:

 

 

gefragt vor 3 Wochen, 2 Tage
j
julmdama,
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, vor 3 Wochen, 2 Tage

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, vor 3 Wochen, 1 Tag
Kommentar schreiben Diese Frage melden
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.
geantwortet vor 3 Wochen
christian_strack verified
Sonstiger Berufsstatus, Punkte: 23.86K
 

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, vor 1 Woche, 6 Tage

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, verified vor 1 Woche, 6 Tage

Ah super, funktioniert sehr gut, danke für die Hilfe!

  ─   julmdama, vor 1 Woche, 5 Tage

Sehr gerne :)

  ─   christian_strack, verified vor 1 Woche, 5 Tage
Kommentar schreiben Diese Antwort melden