不懂是啥,算笔记吗,意识流产物
在代码里实现简陋的物理效果 🥹
我还记得的牛顿力学物理公式
离散的解决方案
不严谨的说就是积分的过程,希望它能有点效果。
给物体上一个速度
我思考,如果在代码里实现速度与位移的关系,可以简化为常数即,因为单位时间基本上就是一次循环遍历,那么直接用常数表示。所以在恒速下,一个物体在单位时间,产生位移可以直接变成自增操作。
给物体上一个加速度
事实上,给速度求导得到的物理意义就是加速度,那当然可以使用类似的定义——简化为常数,速度的变化操作就可以直接表示为。
物体的位移
假设在所有事件里加速度只会突变(比如整型的变化),那么在同一方向上的位移可以表示成:
using Plots
x = range(1, 100, 100);
a = fill(1, 100);
v = cumsum(a);
S = cumsum(v);
plot(x, [a, v, S], label=["a" "v" "S"]);
ylims!(0, 200)
图像:
可以看到位移确实呈二次图像,那么初步确定这个方案可行。
如果后面出现不合适的地方还会返回修改方案的,现在是 20230803
再来试试看带有初速度的位移,同一个方向没什么好说的,初始速度为反方向呢。
using Plots
time = 30;
v0 = -10;
x = range(0, time, time);
a = fill(1, time);
v = fill(0, time) + a;
v[1] = v0;
v = cumsum(v);
S = cumsum(v);
plot(x, [a, v, S], label=["a" "v" "S"]);
ylims!(-60, 60);
xlims!(0, 30)
可以看到时间到 22 左右的时候,位移重新降回零,这个二次的曲线就是我想要的效果,但是实际运用时或许可以考虑乘上一个系数来放缩一下,要不然效果可能变得太夸张。
基于这个离散方案实现其他复杂的物理效果
既然基础的运动事件是可行的,那么可以尝试分析一下更加复杂的!我能力有限就能到哪算哪吧 💩。
// TODO