C 旋转使图像慢慢缩小
我正在用SDL画一个三角形。以下函数用于获取存储在“triCoords”数组中的三角形坐标,并围绕存储在“triPos”数组中的三角形中心旋转指定角度。然而,虽然它看起来旋转正确,但随着时间的推移,它也在缩小三角形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
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:因为没有累积浮点错误重新使用旋转位置导致的浮点错误。