跟踪特定点'x& y在Java中旋转期间在图像上的位置

时间:2012-10-15 01:40:18

标签: java matrix rotation

我正在尝试为2D游戏创建绳索物理,所以作为一个起点,我有一个小的旋转图像,我需要在它的末尾添加另一条绳子。不幸的是,我在尝试跟踪图像的底部时遇到了麻烦,因为旋转发生在它的顶部。我已设法使用以下代码跟踪图像的(0,0)坐标,但我需要能够跟踪点(32,57)。这就是我到目前为止所做的:

xr = xm + (xPos - xm) * Math.cos(a) - (yPos - ym) * Math.sin(a);
yr = ym + (xPos - xm) * Math.sin(a) + (yPos - ym) * Math.cos(a);

感谢任何帮助!

编辑:

嘿,我得到了它的工作= D使用极坐标比以前更容易了。

前2个变量是常数并且保持不变:

    theta0 = Math.atan2(y, x);
    r = 25;

    theta = theta0 + a;
    xr = (r * Math.cos(theta)) + xm;
    yr = (r * Math.sin(theta)) + ym;

xm和ym是我图像的位置。

1 个答案:

答案 0 :(得分:1)

使用极坐标。将原点设置在图像的旋转点,然后选择您喜欢的角度参考(比如0度直接向右,正向旋转从那里逆时针旋转)。

计算相对于此坐标系的所需点(32,57)的极坐标。说答案是(r, theta)

现在,旋转图像时唯一改变的是theta的值。现在,您可以使用新值theta返回x-y坐标。

希望这有帮助。