Obracanie wierzchołków

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.

Czy środek prostokąta jest też środkiem układu współrzędnych? Jeśli nie to tu może być problem

Wydaje mi się że NIE JEST.

  1. Nie zbyt rozumiem jak 4 wierzchołki mogą tworzyć trójkąt? Albo 3 wierzchołki albo czworokąt.

  2. Jeżeli mówisz o obrocie o jakiś tam stopień to musisz wskazać środek obrotu.

Zatem albo wskażesz pkt wg którego prostokąt będzie obracany albo tak zadeklarujesz współrzędne, że środek prostokąta będzie w początku układu współrzędnych

koniar1 , nie koniecznie przecież zawszę można punkt przenieść do innego układu współrzędnych (tak aby się obracać wg środka - proste odejmowanie) po czym obrócić i następnie przenieść z powrotem (proste dodawanie).