根据旋转到 N 度重新计算下一个位置(x 和 y)

Recalculation next position (x and y) based on rotate to N degree

我需要计算形状的下一个位置(X 和 Y),但不知道如何计算。我尝试了不同的解决方案,但始终出现问题。也许有人可以帮助我,我需要一个如何计算的提示,为了更好地理解我将添加屏幕截图。

描述:我在背景中有地图的图像。我在图像上画了形状。之后,我需要将背景旋转 N 度(N 可以从 0 到 360)并重新计算形状的新位置 (X, Y)

我的参数:

另外,我有背景的宽度和高度(如果需要的话)。

我需要一些算法来计算形状的新位置,感谢您的帮助。

因此,您已将背景围绕其中心 C 旋转了 θ 角。您想要对形状的点应用相同的旋转 P.

P 围绕原点的旋转可以通过以下方式实现:

Px = P x·cosθP y · sin θ
Py = P x · sin θ + P y·cosθ

绕点C的旋转可以通过将C移动到原点,旋转,然后移动来实现C回来了。所以:

Px = (P xC x)·cosθ − (P yC y)·sinθ + C x
Py = (P xC x)·sinθ + (P yC y)·cosθ + C y

在JavaScript中:

R.x = (P.x - C.x) * Math.cos(a) - (P.y - C.y) * Math.sin(a) + C.x
R.y = (P.x - C.x) * Math.sin(a) + (P.y - C.y) * Math.cos(a) + C.y

其中 a 是以弧度为单位的 sngle。这将顺时针旋转。如果你改变两个sin项的符号,旋转将是逆时针的。

您可以对多边形的每个点或形状的中心进行旋转,在这种情况下,您还必须围绕其中心旋转形状。