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;
}
你怎么看,旋转时红线的移动与精灵的 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;
}
我的目标 - 移动精灵,左右箭头键必须设置 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;
}
你怎么看,旋转时红线的移动与精灵的 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;
}