Winkel zwischen 3 Punkten

Hallo,

ich wette diese Frage ist äußerst banal, aber ich kriege es einfach nicht gebacken:

Ich habe 3 Punkte, von denen einer den Scheitelpunkt (S) beschreibt, und zwei weitere Punkte (A1, A2) die Schenkel des Winkels begrenzen.

Ich möchte nun aus den Koordinaten der Punkte den Winkel berechnen, der zwischen den Schenkeln von A1 und A2 liegt, auch wenn dieser größer als 180° ist (es soll also nicht immer der kleinere Winkel genommen werden, sondern immer der eine zwischen A1 und A2).

Die Ergebniswerte müssen dann also zwischen 0 und 360° liegen.

Mit einer Gleichung um die Winkel eines Dreiecks zu berechnen ( cos alpha=a^2 + b^2 - c^2 / 2ab ) bin ich der Lösung schon recht Nahe, diese Formel gibt aber immer den kleineren der beiden Winkel aus (Ergebnisse liegen dann zwischen 0 und 180°).

Gruß

Frederic

Hallo =)

Wenn du 3 Punkte hast, S, A1 und A2 bilden diese entweder ein Dreieck oder eine Linie. Wenn du ein Dreieck hast, ergeben alle Winkel zusammen addiert einen Gesamtwinkel von 180°. Bei einer Linie hast du auch einen Winkel von 180° bzw. 0°.

Also entweder verstehe ich dein Problem falsch oder es ist einfach richtig, dass der kleinere Winkel gesucht wird. Wenn du den größeren Winkel haben willst, dann rechne 360°-„den kleinen Winkel“.

MfG, Christian

Hallo,

es war genau das Problem herauszufinden, WANN ich 360° minus den kleineren Winkel rechnen muss. Das ist nämlich abhängig davon, ob A1 links oder rechts der Geraden durch A2 und S liegt. Ich will eben den Winkel von A1 gegen den Uhrzeigersinn bis A2, auch wenn der Winkel im Uhrzeigersinn bis A2 vielleicht kleiner wäre. Ich habe aber mit einer simplen Formel aus dem wikipedia-Artikel des „Graham Scan“ dieses bereits feststellen können.

Es funktioniert also jetzt :smile:

Hallo Fredde,

falls es Dich interessiert: Diese „kleine Formel aus dem Graham scan“ berechnet die Determinante der Matrix, die die Vektoren SA1 und SA2 als Spalten hat. Das Vorzeichen der Determinante (egal in wieviel Dimensionen) gibt Dir immer an, ob das System der Spaltenvektoren positiv oder negativ orientiert ist.
Im Dreidimensionalen sagt es Dir z.B., ob Du, wenn Du mit dem Daumen den ersten, mit dem Zeigefinger den zweiten und mit dem Mittelfinger den dritten Vektor anzeigen willst, dazu die linke oder die rechte Hand brauchst. (Rechte Hand = mathematisch positiv orientiertes System = positive Determinante.)

Liebe Grüße
Immo

Prinzipiell kann der größte mögliche Winkel in einem Dreieck 179,99999999999999999999999999 unendlich betragen.

Also grenzt sich deine Lösung auf „L ist Element von ]0;180[“ ein.
d.h. ist das Ergebnis „L ist Element der Menge ]180;360[“ dann musst du „360 - Ergebnis“ rechnen.

Es geht hier nicht um den Winkel in einem Dreieck sondern um einen Winkel zwischen Drei Punkten.

Die Möglichkeit, dass die drei Punkte auf einer Geraden liegen ist somit nicht ausgeschlossen! Daher kann der Winkel auch 180° betragen.