为什么这么久不更博?因为没时间+懒
效果如下所示~
为了防止拖慢网页,点开more查看吧~
前言 ¶
其实这是寒假时的老项目了,后来改成了Javascript版本 而且代码风格十分混乱
大概就是花了两天推了一堆公式,找出了球体弹性碰撞的公式,然后就拿コンピュータ实现了一下ww
虽然有很多混乱的地方,和极其低下的效率(毕竟我还是高一诶写不出高级的也正常吧)
为了分享Javascript代码,先把python代码(原始代码)拿出来
python代码 ¶
1 | #!/usr/bin/python3 |
Js代码 ¶
Javascript不可以重载运算符真是恶心死了改了半天
嗯,比起python代码稍微变动了一点
首先当然是造一个Canvas
1 | <canvas id="myCanvas" width="500" height="500" style="border:1px solid #c3c3c3;"> |
之后……
1 | ; |
物理原理 ¶
高中知识直接推断而来
有动量守恒(pa+pb=pa’+pb’)和能量守恒(Ea+Eb=Ea’+Eb’)
按二维问题解出方程就好
另外,注意由于是按“刻”来计算碰撞,圆心连线角度不是theta,应该要“倒回来”一定的时间恢复到碰撞临界状态再计算(即hit函数前半部分所作的),然后再“快进”一段时间让两球分离
遇到的坑 ¶
- 从0开始推公式真是难推啊……其实也不难(
- 乱七八糟的临界状态
- tan90度得分开求
- 运算符重载一时爽, Javascript重写火葬场
已知Bug ¶
太多了
后继 ¶
可以在这个网页拿F12进行更多调试!
如:
1 | creat_ball(x,y) //创造球 |