2017-04-12 92 views
0

我正在使用SDL绘制三角形。以下函数旨在获取存储在'triCoords'数组中的三角形坐标,并将它们围绕存储在'triPos'数组中的三角形中心旋转指定角度。然而,尽管它似乎正确地转动它也在不断缩小的三角形随着时间的推移旋转缓慢缩小图像

triCoords[0]=((triCoords[0] - triPos[0])*cos(angle) - (triCoords[1] - triPos[1])*sin(angle)) + triPos[0]; 
triCoords[1]=((triCoords[1] - triPos[1])*cos(angle) + (triCoords[0] - triPos[0])*sin(angle)) + triPos[1]; 
triCoords[2]=((triCoords[2] - triPos[0])*cos(angle) - (triCoords[3] - triPos[1])*sin(angle)) + triPos[0]; 
triCoords[3]=((triCoords[3] - triPos[1])*cos(angle) + (triCoords[2] - triPos[0])*sin(angle)) + triPos[1]; 
triCoords[4]=((triCoords[4] - triPos[0])*cos(angle) - (triCoords[5] - triPos[1])*sin(angle)) + triPos[0]; 
triCoords[5]=((triCoords[5] - triPos[1])*cos(angle) + (triCoords[4] - triPos[0])*sin(angle)) + triPos[1]; 
+4

始终将原始(未修改的)图像用作旋转功能的输入参数。 – 2501

+0

为什么使用旋转的坐标会导致其缩小? –

回答

3

不更新就地坐标,旋转坐标存储在一个单独的阵列。

+0

为什么这个图像会缩小? –

+3

@CallumLukePerks:因为您没有通过重新使用旋转位置来累积浮点错误。 – genpfault