##一、前言
本来想做一个类似window气泡屏保的动画效果。
奈何小球间的非对心碰撞公式没研究出来,对于我来说真的太复杂了,等公式给我研究差不多的时候,发现计算角度的问题也很复杂。博主表示高中的时候物理从未及格,而且这是大学物理的课程……然而我大学并没有学物理。
目前做出来的效果也很简单,只是检测了边界碰撞,原理就是动量守恒,速度交换。
实际效果如丝般顺滑,gif录制掉帧了。
二、实现代码
这次就不封装了,反正也只是半成品,写着玩玩。
https://github.com/lzyzsd/AndroidRandomColor 用到了一个很不错的库,随机生成好看的颜色,国人写的,厉害。
/**
* Created by AItsuki on 2016/1/12.
*/
public class BallView extends View {
private final Random mRandom;
class Ball {
int radius; // 半径
float cx; // 圆心
float cy; // 圆心
float vx; // X轴速度
float vy; // Y轴速度
Paint paint;
// 移动
void move() {
//向角度的方向移动,偏移圆心
cx += vx;
cy += vy;