SDL2,旋转后如何预测直角坐标?

SDL2, how predict rect coordinates after rotation?

我的目标 - 移动精灵,左右箭头键必须设置 moving.I 的方向几天与旋​​转几何体斗争,它打败了我。 我的代码如下

void rotate_point(float cx, float cy, float angle, int *px,int *py) {
    *px = cos(angle) * (*px - cx) - sin(angle) * (*py - cy) + cx;
    *py = sin(angle) * (*px - cx) + cos(angle) * (*py - cy) + cy;
}

https://pastebin.com/vUvnNkKb

你怎么看,旋转时红线的移动与精灵的 X、Y 不匹配rect.Many感谢所有能提供帮助的人。

请注意,您在第二行中使用的 px 已在第一行中更改。

记住旧值并将其用于正确的旋转,如下所示:

void rotate_point(float cx, float cy, float angle, int *px,int *py) {
    float tmp = *px;
    *px = cos(angle) * (tmp - cx) - sin(angle) * (*py - cy) + cx;
    *py = sin(angle) * (tmp - cx) + cos(angle) * (*py - cy) + cy;
}