2014-06-16 43 views
0

考虑两个圆((0,0)为中心,110和210分别为半径...如何使对象在圆形路径中移动?

即我有CENTER为(0,0)和CIRCLE 1半径为110和CIRCLE 2半径为210。 现在我需要在这两个圈子之间移动一个物体tball

这是我的代码 -

public void run() { 

     while (isitok == true) { 
      // perform drawing 
      if (!holder.getSurface().isValid()) { 
       continue; 
      } 
      Canvas canvas = holder.lockCanvas(); 
      canvas.drawARGB(255, 150, 150, 10); 

      // System.out.println("Canvas matrix -" + canvas.getm)); 
      Paint p = new Paint(); 

      // canvas.drawBitmap(tball, (x - tball.getWidth())/2, 
      // (y - tball.getHeight())/2, p); 

      p.setStyle(Paint.Style.STROKE); 
      p.setColor(Color.WHITE); 
      p.setColor(Color.parseColor("#0101DF")); 

      canvas.drawCircle(canvas.getWidth()/2, 
        canvas.getHeight()/2, 60, p); 
      canvas.drawCircle(canvas.getWidth()/2, 
        canvas.getHeight()/2, 110, p); 

      float x = (canvas.getWidth()/2) - (tball.getWidth()/2); 
      float y = (canvas.getHeight()/2) - 110 + (110 - 60)/2 
        - (tball.getHeight()/2); 

      canvas.drawBitmap(tball, x, y, p); 

      float movingpts[]; 

      holder.unlockCanvasAndPost(canvas); 
     } 
    } 
+0

我想这个'public void run()':) –

回答

0

圈的坐标

X = MX + R * cos(angle) 
Y = MY + R * sin(angle) 

其中(MX,MY)是圆的中心或中点,R是半径。对于屏幕坐标,有时更好使用

Y = MY - R * sin(angle) 

以获得与数学惯例有关的圆角方向的角度一致。