android动画实现单摆效果

效果图


android动画实现单摆效果_第1张图片
最终效果

又赶上了一年一度的校招季这个效果来自一道笔试题让写出思路如何实现该效果所以按耐不住还是想用代码去实现一下当然实现起来也不是很复杂

思路


涉及到一些基本的物理定律

单摆的运动周期 T=2 * Math.PI * Math.sqrt(l / 10);

单摆的运动规律为正余玄函数


android动画实现单摆效果_第2张图片


android动画实现单摆效果_第3张图片

我们先考虑第一圆的运动规律

对于1圆我们坐标系的位置建立在o1位置为原点

它对应的 x y随时间的运动规律为 (第1个1/4 T和第4个1/4T)

int x = -(int) (l * Math.sin(angle) * Math.cos(W * jiange * count));

int y = (int) Math.sqrt(l * l - x * x);

count为一个自增量去代表时间变化


对于2圆我们坐标系的位置建立在o2位置为原点

它对应的 x y随时间的运动规律为

int x =0

int y =l; (l为摆长)

canvas.drawCircle(0, l, radius, paintcircle2);

对于3圆我们坐标系的位置建立在o3位置为原点

它对应的 x y随时间的运动规律为(第2个1/4 T和第3个1/4T)

int x = -(int) (l * Math.sin(angle) * Math.cos(W * jiange * count));

int y = (int) Math.sqrt(l * l - x * x);

变化规律与1相同

项目地址

https://github.com/huopochuan/Simplependulum


你可能感兴趣的:(android动画实现单摆效果)