我正在尝试为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是我图像的位置。
答案 0 :(得分:1)
使用极坐标。将原点设置在图像的旋转点,然后选择您喜欢的角度参考(比如0度直接向右,正向旋转从那里逆时针旋转)。
计算相对于此坐标系的所需点(32,57)的极坐标。说答案是(r, theta)
。
现在,旋转图像时唯一改变的是theta
的值。现在,您可以使用新值theta
返回x-y坐标。
希望这有帮助。