Also ich habe jetzt Delphi bei der Hand und gerade getestet und noch frisch:
Delphi-Quellcode:
procedure DrehePunkt (var APunkt: TPoint; AWinkel: Real; ADrehPunkt: TPoint);
var
HX,Hy: Integer;
Sw,Cw: Extended;
begin
Math.SinCos(AWinkel,Sw,Cw);
Hx := APunkt.X-ADrehpunkt.X;
Hy := APunkt.Y-ADrehpunkt.Y;
APunkt.X := ADrehPunkt.X+Round (Hx*Cw-Hy*Sw);
APunkt.Y := ADrehPunkt.Y+Round (Hx*Sw+Hy*Cw);
end;