Я пытаюсь повернуть прямоугольник, вращая его точки, используя этот код
var
dx,dy:real;
rotp:Tpoint;
begin
dx := (CenterPoint.Y * Sin(angle)) - (CenterPoint.X * Cos(angle)) + CenterPoint.X;
dy := -(CenterPoint.X * Sin(angle)) - (CenterPoint.Y * Cos(angle)) + CenterPoint.Y;
rotP.X := round((point.X * Cos(angle)) - (point.Y * Sin(angle)) + dx);
rotP.Y := round((point.X * Sin(angle)) + (point.Y * Cos(angle)) + dy);
result:= rotP;
end;
, но функция round искажает прямоугольник, есть ли у кого-нибудь идеи, как это преодолеть?
Я прикрепил изображение , белые точки - это точки, которые я вращаю вокруг центральной точки, я уверен, что изображение повернуто хорошо, поэтому белые точки должны быть идентичны углам изображения.