Поворот точек прямоугольника индивидуально искажает прямоугольник

enter image description here Я пытаюсь повернуть прямоугольник, вращая его точки, используя этот код

  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 искажает прямоугольник, есть ли у кого-нибудь идеи, как это преодолеть?

Я прикрепил изображение , белые точки - это точки, которые я вращаю вокруг центральной точки, я уверен, что изображение повернуто хорошо, поэтому белые точки должны быть идентичны углам изображения.

7
задан Cœur 11 December 2017 в 07:08
поделиться