我想通过使用圆半径和移动角度来以圆周运动移动精灵。
例如,我知道精灵正在以半径 10 的圆内移动,当前位置为 (387,38),角度为 28 度。现在我不想将它沿圆周移动 100px。
![Pic describing the scenario](https://i.stack.imgur.com/Pe1ss.png)
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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)