以均匀的速度在椭圆路径中移动多个精灵

时间:2012-11-21 14:46:48

标签: ellipse elliptic-curve

我正在尝试在椭圆路径中移动多个精灵(图像),使得距离(弧距离)保持均匀。

我试过了

  • 按角度移动每个精灵角度,但问题是移动单位角度绕主轴移动时的距离不同于移动单位角度绕短轴移动时距离 - 因此移动了不同的距离。

  • 只需改变x轴均匀移动精灵,但它会再次绕主轴移动。

所以任何想法如何均匀地移动精灵而不会相互追赶/重叠?

其他信息:

  • 它将在onMouseMove / onTouchMoved中调用,所以我猜它不应该 CPU密集度很高。
  • 虽然它是一般的算法问题但是 如果它有助于我使用cocos2d-x

1 个答案:

答案 0 :(得分:1)

所以这就是我最终做的事情(为我解决了这个问题):

我将它移动到圆的方程中,并将角度增加1度。使用sin / cos(角度)*半径计算x和y。为了使它变成椭圆形,我将它乘以一个因子。

因子是yIntercept / xIntercept。

所以它最终看起来像这样

FACTOR = Y_INTERCEPT / X_INTERCEPT;

//calculate previous angle
angle = atan((prev_y/FACTOR)/prev_x);

//increase angle by 1 degree (make sure its not radians in your case)
angle++;

//new x and y
x =  cos(newangle) * X_INTERCEPT;
y =  sin(newangle) * X_INTERCEPT * FACTOR;