Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 旋转使图像慢慢缩小_C_Rotation_Sdl - Fatal编程技术网

C 旋转使图像慢慢缩小

C 旋转使图像慢慢缩小,c,rotation,sdl,C,Rotation,Sdl,我正在用SDL画一个三角形。以下函数用于获取存储在“triCoords”数组中的三角形坐标,并围绕存储在“triPos”数组中的三角形中心旋转指定角度。然而,虽然它看起来旋转正确,但随着时间的推移,它也在缩小三角形 triCoords[0]=((triCoords[0] - triPos[0])*cos(angle) - (triCoords[1] - triPos[1])*sin(angle)) + triPos[0]; triCoords[1]=((triCoords[1] - triPos

我正在用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];

不要就地更新坐标,将旋转坐标存储在单独的数组中。

不要就地更新坐标,将旋转坐标存储在单独的数组中。

始终使用原始坐标(未修改)图像作为旋转函数的输入参数。为什么使用旋转坐标会导致其收缩?始终使用原始坐标(未修改)图像作为旋转函数的输入参数。为什么使用旋转坐标会导致图像收缩?为什么这会使图像收缩变大?@CallumLukePerks:因为重复使用旋转位置不会累积浮点错误。为什么这会使图像收缩变大?@CallumLukePerks:因为没有累积浮点错误重新使用旋转位置导致的浮点错误。