根据旋转到 N 度重新计算下一个位置(x 和 y)
Recalculation next position (x and y) based on rotate to N degree
我需要计算形状的下一个位置(X 和 Y),但不知道如何计算。我尝试了不同的解决方案,但始终出现问题。也许有人可以帮助我,我需要一个如何计算的提示,为了更好地理解我将添加屏幕截图。
描述:我在背景中有地图的图像。我在图像上画了形状。之后,我需要将背景旋转 N 度(N 可以从 0 到 360)并重新计算形状的新位置 (X, Y)
我的参数:
- 形状X和Y的起始位置
- N度值
- 形状的宽度和高度
另外,我有背景的宽度和高度(如果需要的话)。
起始位置
已将背景旋转 90 度
已将背景旋转 90 度。手动更改形状 X 和 Y 的位置可能会有一些错误
我需要一些算法来计算形状的新位置,感谢您的帮助。
因此,您已将背景围绕其中心 C 旋转了 θ 角。您想要对形状的点应用相同的旋转 P.
P 围绕原点的旋转可以通过以下方式实现:
P ′x = P x·cosθ
− P y · sin θ
P ′y = P x · sin θ
+ P y·cosθ
绕点C的旋转可以通过将C移动到原点,旋转,然后移动来实现C回来了。所以:
P ′x
= (P x − C x)·cosθ
− (P y − C y)·sinθ
+ C x
P′y
= (P x − C x)·sinθ
+ (P y − C 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项的符号,旋转将是逆时针的。
您可以对多边形的每个点或形状的中心进行旋转,在这种情况下,您还必须围绕其中心旋转形状。
我需要计算形状的下一个位置(X 和 Y),但不知道如何计算。我尝试了不同的解决方案,但始终出现问题。也许有人可以帮助我,我需要一个如何计算的提示,为了更好地理解我将添加屏幕截图。
描述:我在背景中有地图的图像。我在图像上画了形状。之后,我需要将背景旋转 N 度(N 可以从 0 到 360)并重新计算形状的新位置 (X, Y)
我的参数:
- 形状X和Y的起始位置
- N度值
- 形状的宽度和高度
另外,我有背景的宽度和高度(如果需要的话)。
起始位置
已将背景旋转 90 度
已将背景旋转 90 度。手动更改形状 X 和 Y 的位置可能会有一些错误
我需要一些算法来计算形状的新位置,感谢您的帮助。
因此,您已将背景围绕其中心 C 旋转了 θ 角。您想要对形状的点应用相同的旋转 P.
P 围绕原点的旋转可以通过以下方式实现:
P ′x = P x·cosθ
− P y · sin θ
P ′y = P x · sin θ
+ P y·cosθ
绕点C的旋转可以通过将C移动到原点,旋转,然后移动来实现C回来了。所以:
P ′x
= (P x − C x)·cosθ
− (P y − C y)·sinθ
+ C x
P′y
= (P x − C x)·sinθ
+ (P y − C 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项的符号,旋转将是逆时针的。
您可以对多边形的每个点或形状的中心进行旋转,在这种情况下,您还必须围绕其中心旋转形状。