我想通过使用圆半径和移动角度以圆周运动移动 Sprite 。
例如,我知道 Sprite 在半径为 10 的圆圈中移动,它的当前位置是 (387,38),角度是 28 度。现在我不想移动它说,沿圆周长 100 像素。
p1 = x&y coordinate, known (387,38) in example with movingangle 28 degrees
r = radius, known (10 in example)
l = distance to move along bend, known (100px in example)
p2 = new point, what is this x and y value?
我有一个有效的解决方案,但我不太喜欢它。这对我来说没有意义,它需要比我认为需要的更多的计算。它的工作原理是首先使用 p1 计算中心点,然后向后执行相同的操作以获得 p2(使用余弦和正弦)。我相信应该有一种更快的方法,但我找不到任何人这样做。
我标记 cocos2d 的原因是因为这就是我正在使用的内容,有时游戏框架会提供函数来帮助处理三角函数。
最佳答案
尝试这个:
a1 = 28*(π/180)
cen.x = p1.x - r*SIN(a1)
cen.y = p2.y - r*COS(a1)
a2 = a1 + l/r
p2.x = cen.x + r*SIN(a2)
p2.y = cen.y + r*COS(a2)
没有比这更简单的了。从 p1 移动到圆心,然后移动到 p2。
关于math - 如何沿圆移动点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462239/