反向圆周运动

时间:2010-11-28 12:29:09

标签: objective-c math

我有关于反向圆周运动的询问。我有下面的代码。壳体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;

2 个答案:

答案 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);