Winkel zwischen zwei Punkten
-
Cpp_Junky schrieb:
Winkel = acos ( (v1 . v2)/(v1-Betrag*v2-Betrag) )
(v1 . v2) ist das Skalaprodukt oder ?
Ja.
Cpp_Junky schrieb:
Was ist dann v1-Betrag und v2-Betrag ?
Die Länge der beiden Vektoren ?Ja.
Cpp_Junky schrieb:
Und warum "acos" ?
Weil Du mit cos x/y bei gegebenem Winkel rausbekommst und mit arccos (der Umkehrung von cos) den Winkel bei gegebenem x/y.
-
Ehm, ne, erklären kann ichs nicht *g* War mir nur noch im Kopf weil ich das auch mal brauchte
cos(winkel) = Skalarprodukt/Produkt der Beträge.
Ja mit v1.v2 mein ich das Skalarprodukt. und die Beträge sind die Längen der Vektoren
-
Cpp_Junky schrieb:
Bringt bei meinem Beispiel einen Wert von 1.5xxxx
Muss man diesen Wert noch irgendwie weiterverarbeiten damit man einen Winkelwert zwischen 0° und 360° bekommt ?*360.0/(2*PI)
-
Ok ich habs verstanden glaube ich. Aber die Werte die meinen Winkel darstellen sollen sehen nicht wirklich korrekt aus
Was muss ich mit diesem Wert noch anstellen ? Oder ist mein Code irgendwo falsch ?
-
-
Doch, stimmt schon.
Skalarprodukt: gibt -100
Beträge multipliziert: 100acos(-1.0) = 3.141 = 180.0°
-
Man das geht ja schnell heute
Danke, jetzt hab ichs raus(edit)
Hier nochmal für alle andern die es nicht wissen (oder für die FAQ):double dLaenge1 = sqrt(((Punkt1.x * Punkt1.x) + (Punkt1.y * Punkt1.y))); double dLaenge2 = sqrt(((Punkt2.x * Punkt2.x) + (Punkt2.y * Punkt2.y))); double dSkalar = (double)(Punkt1.x * Punkt2.x) + (Punkt1.y * Punkt2.y); double PI = 3.14159265; double dWinkel = acos(dSkalar / (dLaenge1 * dLaenge2)); dWinkel = dWinkel * (360.0 / (2 * PI));
-
Zwei Punkte definieren keinen Winkel. Dazu brauch man 3.
Bye, TGGC (Pipe my World.)
-
Hab noch ne Frage zum Schluss:
Kann man auch nur aus einem Vektor auch einen Winkel errechnen ?
Also: 180° bei X = 0, Y = 1
oder 90° bei X = 1, Y = 0Geht das dann auch umgekehrt ? Also 180° ergibt Vector(0, 1) ?
-
-
Gibts da was zu essen ?
Ne ne hast schon rechtHab mir jetzt dieses "Computergrafik"-Buch bestellt. Ich hoffe das wird meine Fragen diesbezüglich in Zukunft klären