【VB】两种不同的粒子系统模拟
这两个实例的代码只是用来模拟粒子系统。2D的模拟通常可以轻松作为3D模拟的蓝本。此外,这样的例子模拟展示了一些简单的碰撞判断和力的计算方式。其中一种是刚性的,就是粒子之间具有碰撞的效果,类似于我们现实生活中把大量玻璃球扔在地上的效果。
而另一种是柔性的,粒子之间进行排斥力计算,这个排斥力的大小取决于粒子核之间的距离(线性计算力的大小)。
这两种都不是采用的严谨的算法——其实都只是单纯地每一帧根据粒子自己的位置来计算力,而不会预判或者迭代计算。
都用了简单的碰撞检测。其中有个取得线与圆交点的函数并没有被使用——它太慢了。
实例1:刚性粒子模拟。可以看到粒子像鹅卵石一样,堆积在下面。
实例2:柔性粒子模拟。可以看到粒子在屏幕上飞来飞去,很难稳定下来。
实例中的粒子可以用鼠标点住并拖动。拖动时松开鼠标可以让粒子顺着鼠标轨迹飞出去。在第一个图上,那个大的粒子就被我拖住砸向右下角,把很多小的粒子轰飞了。
而第二个实例还有一种玩法就是把窗口拖得横向很长,而纵向高度只有那个大粒子的直径。可以看到模拟“滑膛枪”中发射弹丸的情况(脑补)
代码很简单,VB写的。
实例1的exe:
实例2的exe:
实例1源码:**** Hidden Message *****
实例2源码:**** Hidden Message *****
学习一下,谢谢楼主 学习一下,谢谢楼主 学习一下,谢谢楼主 ;P;P;P;P;P;P;P;P;P;P 这太有趣了...哈哈 研究下~ 再来温习一下:lol 感謝大大的分想 正須要 best740 发表于 2017-2-23 19:45
感謝大大的分想 正須要
我现在都不好意思说这是我写的了! 想看看第二种 学习下看看 楼主功夫了得 本帖最后由 zbaigao 于 2017-11-6 09:57 编辑
FPS很高呀,想知道楼主大大是怎么做到精确计时和刷新屏幕,并且可以获取鼠标的,用timer肯定办不到,获取鼠标从而拖动小球看上去也不是写一个Click可以办到的 学习一下,谢谢楼主 前来学习,感谢分享 看看学习下 谢谢分享感谢啊最棒的 : 【VB】两种不同的粒子系统模拟 [修改] 学习一下,谢谢楼主 :loveliness:学习~
页:
[1]
2