Obracam sobie figurę, ale niestety, w trakcie obracania zmniejsza mi się ona, i nie mam pojęcia czemu.
Wzór na obracanie się w okół punktu wzięłam z wiki -> http://pl.wikipedia.org/wiki/Obr%C3%B3t
x_points i y_points to wskaźniki na punkty mojej figury, n to liczba punktów:

void Ship::RotateLeft(double angle)
{
	for (int i = 0; i < n; i++)
	{
		*(x_points + i) -= x;
		*(y_points + i) -= y;
		*(x_points + i) = Fun::round(*(x_points + i) * cos(angle) - *(y_points + i) * sin(angle));
		*(y_points + i) = Fun::round(*(x_points + i) * sin(angle) + *(y_points + i) * cos(angle));
		*(x_points + i) += x;
		*(y_points + i) += y;
	}
}

Kat obliczam tak:

angle -= (M_PI * 10) / 180;
if(angle < 0) angle += 2 * M_PI;

A tak robię round:

        static int round(double x)
	{
		double tmp;
		if (modf(x,&tmp)>=.5)
			return x>=0?ceil(x):floor(x);
		else
			return x<0?ceil(x):floor(x);
	}