Mam w tablicy 4 wierzchołki tworzące prostokąt. Chciałbym je obrócić o ileś stopni/radianów względem siebie. Próbowałem coś takiego:
float tx1,ty1,tx2,ty2;
float sint,cost;
if(vscale==0) vscale=hscale;
tx1=-hotX*hscale;
ty1=-hotY*vscale;
tx2=(bWidth-hotX)*hscale;
ty2=(-bHeight-hotY)*vscale;
if(rot!=0)
{
cost=cosf(rot*PI/180);
sint=sinf(rot*PI/180);
pVertices[0].x=tx1*cost-ty1*sint+x;
pVertices[0].y=tx1*sint+ty1*cost+y;
pVertices[1].x=tx2*cost-ty1*sint+x;
pVertices[1].y=tx2*sint+ty1*cost+y;
pVertices[2].x=tx2*cost-ty2*sint+x;
pVertices[2].y=tx2*sint+ty2*cost+y;
pVertices[3].x=tx1*cost-ty2*sint+x;
pVertices[3].y=tx1*sint+ty2*cost+y;
}
else
{
pVertices[0].x=tx1+x;pVertices[0].y=ty1+y;
pVertices[1].x=tx2+x;pVertices[1].y=ty1+y;
pVertices[2].x=tx2+x;pVertices[2].y=ty2+y;
pVertices[3].x=tx1+x;pVertices[3].y=ty2+y;
}
Gdzie rot to wartość rotacji w stopniach, a hotX i hotY to środek prostokąta.
Niby działa, ale wszystkie wierzchołki obracają się względem jakiegoś punktu POZA prostokątem, a chciałbym aby obracały się względem jego środka.