Function TForm1.CalcRotatedPosition(Rx: single; Ry: single; Ox: single;
Oy: single; Angle: single): TPoint;
var
cosine:single;
sine:single;
TmpPoint: TPoint;
NewPoint: TPoint;
begin
cosine:=cos(Angle);
sine:=sin(Angle);
//Translate back from origin
TmpPoint.x:=Round(Rx-Ox);
TmpPoint.y:=Round(Ry-Oy);
//Rotate Point
NewPoint.x:=Round(TmpPoint.x * cosine - TmpPoint.y * sine);
NewPoint.y:=Round(TmpPoint.x * sine + TmpPoint.y * cosine);
//Translate Back To origin
TmpPoint.x:=Round(NewPoint.x + Ox);
TmpPoint.y:=Round(NewPoint.y + Oy);
Result:=TmpPoint;
end;