Чтобы получить ограничивающий прямоугольник с определенным углом, поверните многоугольник в обратном направлении на этот угол. Затем вы можете использовать координаты min / max x / y, чтобы получить простую ограничивающую рамку, и повернуть ее на угол, чтобы получить окончательный результат.
Из вашего комментария кажется, что у вас есть проблемы с получением центральной точки многоугольника. Центр многоугольника должен быть средним от суммы координат каждой точки. Поэтому для точек P1, ..., PN рассчитайте:
xsum = p1.x + ... + pn.x;
ysum = p1.y + ... + pn.y;
xcenter = xsum / n;
ycenter = ysum / n;
Чтобы завершить это, я также добавлю некоторые формулы для поворота. Чтобы повернуть точку (x, y) вокруг центральной точки (cx, cy), выполните следующие действия:
// Translate center to (0,0)
xt = x - cx;
yt = y - cy;
// Rotate by angle alpha (make sure to convert alpha to radians if needed)
xr = xt * cos(alpha) - yt * sin(alpha);
yr = xt * sin(alpha) + yt * cos(alpha);
// Translate back to (cx, cy)
result.x = xr + cx;
result.y = yr + cx;