Hallo
DP,
um ein Objekt mit der Maus um seinen Mittelpunkt zu bewegen brauche ich den Winkel, den zwischen dem Vektor Ursprung - Startposition der Maus und Ursprung - momentane Position der Maus liegt. Nach kurzem Googeln bin ich auf
diese Seite gestoßen und die dort angegebene Formel funktioniert auch so weit.
Das einzige Problem ist, dass diese Art der Berechung nur für Winkel 0° >= alpha >= 180° gilt, da immer der kleinere von beiden Winkeln berechnet wird.
Nun suche ich aber den Winkel, der zwischen der Startposition der Maus und der momentaten Position der Maus - und zwar in dieser Reihenfolge und nicht umgekerht - liegt.
Wie kann ich also schauen, ob ich den berechneten Winkel noch von 180° subtrahieren muss oder nicht
Hier ist mein aktueller Code:
Delphi-Quellcode:
procedure TFuncPlotter.OnMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
p1, p2: TPoint;
da: Double; //delta alpha;
begin
p1.X := FStartPos.X - Origin.X;
p1.Y := FStartPos.Y - Origin.Y;
p2.X := X - Origin.X;
p2.Y := Y - Origin.Y;
da := RadToDeg(ArcCos(((p1.X * p2.X + p1.Y * p2.Y) / (Sqrt(Sqr(p1.X) + Sqr(p1.Y)) * Sqrt(Sqr(p2.X) + Sqr(p2.Y)))))); //(p1 * p2) / (|p1| * |p2|)
Rotation := FPlotterStartAngle + da;
end;
MfG Bigben37