Skalarprodukt zur Winkelberechnung

Hi,
ich stehe geade auf dem Schlauch. Ich möchte schlichtweg einen Winkel zwischen zwei Vektoren errechnen, die auf 3 Punkete gegeben sind. (Also vekt1 geht von P1 nach P2 und vekt2 von P2 nach P3)

Eingentlich recht simpel mit dem Skalarprodukt zu berechnen. Nur macht mir der Cos (so denke ich) einen Strich durch die Rechnung, wenn ich 90° und 270° gerne unterschieden hätte :wink:
double alpha = Math.acos(skpr / (norm1 * norm2)); norm ist jeweils durch den Pythagoras erzeugt worden.

Habt ihr eine Idee, wich ich das ganze elegant lösen könnte?
Mein Ziel soll es sein, vektoren, welche einen „Weg“ darstellen auf ihren Lauf zu untersuchen. Also eine Reihe a {5°, 350° , 15°, 90°, 270°,…} bei einer Punktuell definierten Strecke soll dabei raus kommen.

Grüße Oekel

Tut mir leid, in der Mathematik widme ich mich gerade einem ganz anderen Gebiet, weswegen ich mich erst in die Vektorrechnung hineindenken müsste und deshalb kann ich dir im Moment dazu überhaupt nicht helfen.
Tut mir leid.

Ich habe nicht ganz verstanden, um was es geht.
Ich glaube, es soll programmiert werden: Ein Weg soll vektoriell beschrieben werden und die jeweiligen Winkel sollen sozusagen die Abzweigungen darstellen. Deshalb der Zwang zwischen zB 270° und 90° zu unterscheiden.
Winkel zwischen Vektoren sind stets definiert als der kleinere, eine Unterscheidung macht hier keine Sinn, da Vektoren ja eh frei sind.
In einem klaren Koordinatenkontext könnte ich mir vorstellen, dass das Programm prüft, ob zB die „Höhe“ sich positiv verändert, sagen wir x_3-Koordinate, dann nimmt man den größeren Winkel, verändert sie sich negativ den kleineren Winkel (mathematischer Mess-Sinn bei Winkeln) oder bei negativer Koordinatenänderung setzt man vor dem Winkel ein Minus-Zeichen.
Damit würde der Winkel Anstieg oder Abfall darstellen.
Das müsste funktionieren, in den Kontext passen und programmierbar sein, wobei ich von Programmieren keine Ahnung habe.
lg

Ich hoffe es ist erlaubt, dass ich es Mal anhand eines Bildes versuche zu erklären:

Auf dem Bild soll das ganze Szenario dargestellt sein. Ich habe einen Weg und möchte zum schluss so etwas sagen können wie „der Weg beschreibt zuerst eine leichte Rechtskurve und danach eine große linke Wende“. Das und auch die Tatsache, dass ich es programmiere, sollte relativ irrelevant sein.

Wichtig ist mir nun nur, dass der Winkel immer an der selben Stelle gemessen wird. (Also im Bild immer gegen den UZS von der vorigen Gerade aus betrachtet, also Vetor1; NICHT so wie das CAD-Programm es teilweise optimiert hat, also maximaler Winkel 180°; Habt versucht mit weiß anzudeuten, dass ich immer den vollen Winkel brauche)

Wenn man dies nun runterbricht bin ich wieder bei den 2 Vekoren (blau) und einem unbekanntem Winkel (schwarz). Meine „links, rechts“-Geschichten sind dann ja nur noch ein Kinderspiel mittels gestrichelter Linie 180° und einer Vorzeichenbeachtung.

Mein Ansatz aus der Schulzeit war eben das Skalarprodukt. Vielleicht gibt es aber einen viel einfacheren Ansatz?

Grüße Oekel

Sorry, Vektoren sind nicht meine Stärke. Viel Erfolg bei den anderen Experten

kann leider auch nicht mehr dazu sagen als Brückenzentrum …
sorry

Hallo Oekel,

ich kann dir leider im Moment nicht weiterhelfen.

Viele Grüße

Benjamin

Wenn du dich in der Ebene befindest und der Weg ja bekannt ist, könnten feste Strecke festgelegt werden und der jeweilige Innenwinkel durch Sinussatz zB berechnet werden.
Ansonsten müsste der Ansatz wie in der ersten Antwort doch vielversprechend sein, das über einen Koordintenvergleich zu entscheiden.

Hallo.

Leider kenne ich Deine Berechnungsvorschriften nicht. Double, skpr usw.

Ich hoffe, ein anderer konnte helfen…

Wie wäre es mit dem Vorzeichen aus dem Kreuzprodukt? Das müsste sich doch unterscheiden in wenigstens einer Komponente

Guten Morgen

sorry, war letzte Woche komplett in Arbeit versunken.

PRinzipiell ist der Ansatz richtig, nur musst du vorher noch eine Fallunterscheidung machen. Da das SKP ja nicht zwischen „links“ und „rechts“ herum unterscheidet, musst Du wahrscheinlich das Kreuzprodukt heranziehen, um herauszufinden, ob Du 90 oder 270 Grad hast.

Grüße

Carsten

PS: Sorry, dass ich so spät antworte und diese Antwort dann auch noch recht schwammig ist :wink:

sorry, da kann ich im Moment nicht helfen - Gruß Bernd