как минимум ошибка в
Код:
for I := 0 to 4 do
begin
RectCooLast[i].X := Round(RectCooOrg[i].X * cosa - RectCooOrg[i].Y * sina + x0);
RectCooLast[i].Y := Round(RectCooOrg[i].Y * cosa + RectCooOrg[i].X * sina + y0);
end;
ибо массив у тебя RectCooLast : array[0..
2] of TPoint;
работоспособность в целом не проверял.
z0 нигде не используется.