0xAA55 发表于 2015-8-1 01:52:25

【VB】两种不同的粒子系统模拟

这两个实例的代码只是用来模拟粒子系统。2D的模拟通常可以轻松作为3D模拟的蓝本。此外,这样的例子模拟展示了一些简单的碰撞判断和力的计算方式。

其中一种是刚性的,就是粒子之间具有碰撞的效果,类似于我们现实生活中把大量玻璃球扔在地上的效果。
而另一种是柔性的,粒子之间进行排斥力计算,这个排斥力的大小取决于粒子核之间的距离(线性计算力的大小)。
这两种都不是采用的严谨的算法——其实都只是单纯地每一帧根据粒子自己的位置来计算力,而不会预判或者迭代计算。

都用了简单的碰撞检测。其中有个取得线与圆交点的函数并没有被使用——它太慢了。

实例1:刚性粒子模拟。可以看到粒子像鹅卵石一样,堆积在下面。


实例2:柔性粒子模拟。可以看到粒子在屏幕上飞来飞去,很难稳定下来。


实例中的粒子可以用鼠标点住并拖动。拖动时松开鼠标可以让粒子顺着鼠标轨迹飞出去。在第一个图上,那个大的粒子就被我拖住砸向右下角,把很多小的粒子轰飞了。
而第二个实例还有一种玩法就是把窗口拖得横向很长,而纵向高度只有那个大粒子的直径。可以看到模拟“滑膛枪”中发射弹丸的情况(脑补)


代码很简单,VB写的。
实例1的exe:
实例2的exe:

实例1源码:**** Hidden Message *****
实例2源码:**** Hidden Message *****

mzflz 发表于 2015-8-1 17:26:09

学习一下,谢谢楼主

EHAAA 发表于 2015-8-24 13:13:59

学习一下,谢谢楼主

0x01810 发表于 2015-11-22 22:59:33

学习一下,谢谢楼主

besteast 发表于 2015-11-25 16:49:33

;P;P;P;P;P;P;P;P;P;P

鬼玺 发表于 2015-12-9 23:44:24

这太有趣了...哈哈 研究下~

账号已注销 发表于 2016-5-16 19:14:38

再来温习一下:lol

best740 发表于 2017-2-23 19:45:49

感謝大大的分想 正須要

0xAA55 发表于 2017-2-23 20:17:37

best740 发表于 2017-2-23 19:45
感謝大大的分想 正須要

我现在都不好意思说这是我写的了!

NTFS--迷幻矩阵 发表于 2017-2-26 00:59:35

想看看第二种

tx7790 发表于 2017-2-27 12:35:25

学习下看看

冰不孤独 发表于 2017-3-23 10:02:13

楼主功夫了得

zbaigao 发表于 2017-11-6 09:56:20

本帖最后由 zbaigao 于 2017-11-6 09:57 编辑

FPS很高呀,想知道楼主大大是怎么做到精确计时和刷新屏幕,并且可以获取鼠标的,用timer肯定办不到,获取鼠标从而拖动小球看上去也不是写一个Click可以办到的

鬼鬼今天又秀了 发表于 2019-9-10 16:50:04

学习一下,谢谢楼主

马云爱逛京东 发表于 2019-10-30 22:54:35

前来学习,感谢分享

hxin123456 发表于 2020-4-3 21:06:59

看看学习下

大vb 发表于 2020-10-10 18:59:11

谢谢分享感谢啊最棒的

Xaio 发表于 2020-10-13 17:13:06

: 【VB】两种不同的粒子系统模拟 [修改]

神梦无痕 发表于 2022-5-20 18:47:36

学习一下,谢谢楼主

二十六 发表于 2022-11-4 11:35:16

:loveliness:学习~
页: [1] 2
查看完整版本: 【VB】两种不同的粒子系统模拟