我有关于反向圆周运动的询问。我有下面的代码。壳体1是顺时针圆周运动,壳体2是逆时针方向。情况1和2之间的切换是通过用户触摸完成的。当它从顺时针切换到逆时针时,它使用sin()
和cos()
中timer/1.5
的相同值。这导致逆时针运动从我星球上的不同位置开始。我想计算我的计时器所需的值,以便逆时针运动从顺时针运动期间停止的位置开始,从而具有平滑过渡。当我的思绪陷入困境时,有没有人知道正确的数学?
以下代码的一个小解释。我正在计算我的机器人的位置,通过获取它所在的行星的x和y坐标并执行一个圆形运动,其半径为行星半径+ 55(这是我的精灵的舒适高度)。
case 1:
positionX = AttachedPlanet.positionX + sin(timer/1.5)*(AttachedPlanet.planetRadius + 55);
positionY = AttachedPlanet.positionY + cos(timer/1.5)*(AttachedPlanet.planetRadius + 55);
timer = timer + 0.02;
break;
case 2:
positionX = AttachedPlanet.positionX + cos(timer/1.5)*(AttachedPlanet.planetRadius + 55);
positionY = AttachedPlanet.positionY + sin(timer/1.5)*(AttachedPlanet.planetRadius + 55);
timer = timer + 0.02;
答案 0 :(得分:5)
为什么不保持相同的功能并切换到递减计时器?如果您需要一些总时间的测量,请保持第二个定时器总是在上升。
答案 1 :(得分:2)
要切换方向,您需要减去sin / cos结果。像
这样的东西dir = +1; //initialization
if (switchDirection) //event handling
dir *= -1;
//calculation
positionX = AttachedPlanet.positionX + dir*cos(timer/1.5)*(AttachedPlanet.planetRadius + 55);
positionY = AttachedPlanet.positionY + dir*sin(timer/1.5)*(AttachedPlanet.planetRadius + 55);