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);
}