Итак, я пишу функцию, которая берет точку и поворачивает ее вокруг другой точки под определенным углом, поэтому, когда я рисую прямоугольник, я хочу, чтобы этот прямоугольник тоже вращался, но он искажается. рисуя два цветных прямоугольника, один без поворота, а другой повернут на угол, указанный на рисунке:
Фиолетовый контур должен выглядеть как красный. Это код для поворота
double d2r(double d)
{
return (d / 180.0) * ((double)M_PI);
}
double sind(double x)
{
return std::sin(d2r(x));
}
double cosd(double x)
{
return std::cos(d2r(x));
}
std::pair<double, double> rotate_around(double x, double y, double o_x, double o_y, double angle)
{
x = o_x + (x - o_x) * cosd(angle) - (y - o_y) * sind(angle);
y = o_y + (y - o_y) * cosd(angle) + (x - o_x) * sind(angle);
return std::pair<double, double>(x, y);
}
Функция rotate_around вызывается со следующими параметрами (оригинал x, оригинал y, середина x прямоугольника, середина y прямоугольника, угол прямоугольника)
Может кто-нибудь сказать мне, что я здесь не так делаю?