Android--绘制圆周运动

      最近在工作中需要完成一个质点圆周运动的功能,一开始想当然很简单,实际做起来的时候遇到太多麻烦了,汗! 下面说说怎么画一个质点做圆周运动咯

      在Android里面实现这样的效果或许有很多方式。

比如 

方法1.用动画的方式,Tween Animation(渐变动画,几何动画)。准备一个质点的图。配上一        个 RotateAnimation动画 。

 

方法2.自定义一个view绘制的方式。

 

第一种方式比较简单,但同时也不灵活,几乎没有扩展性,所以适合一些业务需求比较简单的情况,这里主要讨论的是 第二方式实现。

 

首先,要在view中绘制几何图形,得先了解几何特性,圆:很简单把,小学就学过的,已知圆心o和半径r 就可以确定一个圆,那做圆周运动呢?也不难咯,都知道圆心和半径了,圆弧轨迹自然也就能求啦.本质实现就是不断更新轨迹坐标,不停刷新,这样看起来就是圆周运动了!

来给个图,就一目了然了。

 Android--绘制圆周运动_第1张图片

上图所示,现在假设,要在一个View的正中画一个圆周运动轨迹,那么 view的中心点就是圆心Oab,其坐标可以已知,现根据需求,设定半径R,长度已知,那么图中A点坐标(x,y)就x=a-R, y=b。有了这个坐标,就在View中绘制第一点轨迹了,

使用画布移动到x,y;

canvas.translate(X,Y);
canvas.drawBitmap(mBitmap, mMatrix , mPaint);

随着时间的推移,不断更新轨迹坐标,那么接下来就绘制下一个轨迹点,假设一个点是B点,那B点坐标如何求呢?很简单的数学应用,如图 B的x1坐标实际就是 上面箭头指示的长度,而y1坐标就是下面那个箭头指示的长度。怎么计算呢?如果转过的角度是Q,那么 ,X1/R=cosQ>> X1=R*cosQ ,同理Y1=R*sinQ(注意:在实际计算过程中要从屏幕原点开始计算,所以应该还要在加上圆心的b的坐标值)。接下来就(Xn,Yn)坐标啦。


 

 

 

 

 

 


你可能感兴趣的:(coding)