Hm,
so eine Funktion habe ich just gestern auch geschrieben, komme aber mit deutlich weniger Zeilen aus
Delphi-Quellcode:
procedure TScaledCanvas.RotatePoints(var pnts: array of TPoint; angle: Double;
center_x, center_y: Integer);
var i, x, y: Integer;
begin
for i:=Low(pnts) to High(pnts) do begin
x := pnts[i].X - center_x;
y := pnts[i].Y - center_y;
pnts[i].X := center_x + Round(x * Sin(angle) + y * Cos(angle));
pnts[i].Y := center_y + Round(y * Sin(angle) - x * Cos(angle));
end;
end;
Eigentlich funktionierts genauso gut, also in diesem Fall wird gleich ein ganzes Array von Punkten um einen Center rotiert.