Winkel einer Strecke bestimmen.
-
hi!
ich hab ein kleines Problemchen, welches dieses ist:
Gegeben sind die zwei Punkte A und B. A stellt dabei den Mittelpunkt eines Kreises dar, wärend B ein Punkt auf dem Kreis ist.
Wie berechnet man jetzt aber den Mittelpunktswinkel des Kreissektors?Um das Problem zu verbildlichen:
In dem Bild ist der Winkel w gesucht. A und B sind als Koordinaten( x und y ) gegeben.
-
Und die willkürlich gesetzte Gerade in dem Bild zu der du den Winkel misst, ist wie gegeben?
-
das ist Quasi ne "Orientierungslinie".
Orientierungslinie O;
O.x = A.x + Radius;
O.y = A.y;hmok. Demnach hab ich also 3 Punkte gegeben: A, B und O.
-
Yo, also wenn du den Mittelpunkt des Kreises hast, dann bestimmst du ja die Position von B durch:
B.x = A.x + Rcos(-w);
B.y = A.y + Rsin(-w);Das kannst du ja nach w umstellen, hast dann allerdings eine Mehrdeutigkeit, die du mit einer Fallunterscheidung beseitigen musst.
-
Ok. So hab ichs gemacht, und so funkionierts:
#define DEGtoRAD ( 180.0 / M_PI ) double winkel = 0.0; if( A.y > B.y ) winkel = acos( ( A.x - B.x ) / length ) * DEGtoRAD + 180.0; else winkel = acos( ( B.x - A.x ) / length ) * DEGtoRAD;
Danke!
-
Guck dir mal an, was atan2 ist. Das löst alle deine Probleme in einem Schritt.