I draw a rectangle using WinAPI tools. How to rotate:
POINT pi; // структура точка // Определяю центр прямоугольника pt.x = (начало отрезка + конец отрезка) / 2; pt.y = (начало отрезка по вертикали + конец отрезка) / 2; // координаты хранятся в двух массивах coordinate_x и _y соответственно for (int i(0); i < 4; i++) { // вычитаю из каждой точки центр прямоугольника coordinate_x[i] -= pt.x; coordinate_y[i] -= pt.y; // поворачиваю точку по формулам: // xNew = x * Cos(A) + y * Sin(A) // yNew = y * Cos(A) - x * Sin(A) // _gradus - подаётся в градусах, поэтому конвертирую в радианы int new_x = cos(_gradus * (PI / 180))*coordinate_x[i] - sin(_gradus * (PI / 180)) * coordinate_y[i]; int new_y = sin(_gradus * (PI / 180)) * coordinate_x[i] + cos(_gradus * (PI / 180))*coordinate_y[i]; // прибавляю к повернутой точке центр прямоугольника и записываю обратно в массив coordinate_x[i] = pt.x + new_x; coordinate_y[i] = pt.y + new_y; } Already then draw again. But the rotation goes around the top left. Where am I wrong?


начало отрезка + конец отрезка? What is theначало отрезка по вертикали + конец отрезка? How did you manage to compile it? - AnTcoord_left_x,coord_right_x,coord_top_y,coord_bottom_y? Where do these values come from? If you have nonsense in these values, then everything will rotate around the wrong point. Why is the obviously critical information missing in the question text? - AnT