Ich hab mir mal dazu eine Funktion dazu geschrieben, Erklärung s. Bild
Delphi-Quellcode:
function Angle(const p1, p2: TPoint; const InDeg: Boolean = true): Single;
begin
if p2.X = p1.X then
begin
if p1.Y < p2.Y then
Result := pi / 2
else
Result := 3 * pi / 2
end
else
begin
Result := Arctan((p2.Y - p1.Y) / (p2.X - p1.X));
if p2.x < p1.x then
Result := Result + pi;
if Result < 0 then
Result := Result + 2 * pi;
end;
if InDeg then
Result := RadToDeg(Result);
end;
Zu beachten ist allerdings, dass mit der verkehrten y-Achse von Windows auch die Winkel verkehrt herum sind. In dem Beispiel wäre Result z.B. etwa 330 °.
Also z.B:
alpha := Angle(Mittelpunkt, Point(x, y), false);
@Binärbaum: Du hast MoveTo und LineTo verwechselt
.