技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2014|回复: 13
收起左侧

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

[复制链接]

1043

主题

2335

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
217
威望
294 点
宅币
18229 个
贡献
36857 次
宅之契约
0 份
在线时间
1738 小时
注册时间
2014-1-26
发表于 2015-8-1 01:52:25 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

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

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

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

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

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

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

代码很简单,VB写的。
实例1的exe: Particle.exe (24 KB, 下载次数: 12)

本帖被以下淘专辑推荐:

17

主题

42

帖子

529

积分

用户组: 大·技术宅

UID
140
精华
5
威望
30 点
宅币
376 个
贡献
26 次
宅之契约
0 份
在线时间
44 小时
注册时间
2014-3-22
发表于 2015-8-1 17:26:09 | 显示全部楼层
学习一下,谢谢楼主

2

主题

12

帖子

55

积分

用户组: 小·技术宅

UID
1054
精华
0
威望
0 点
宅币
43 个
贡献
0 次
宅之契约
0 份
在线时间
4 小时
注册时间
2015-8-19
发表于 2015-8-24 13:13:59 | 显示全部楼层
学习一下,谢谢楼主

0

主题

76

帖子

6735

积分

用户组: 真·技术宅

UID
604
精华
0
威望
1 点
宅币
804 个
贡献
5853 次
宅之契约
0 份
在线时间
97 小时
注册时间
2014-12-20
发表于 2015-11-22 22:59:33 | 显示全部楼层
学习一下,谢谢楼主

0

主题

72

帖子

166

积分

用户组: 小·技术宅

UID
1291
精华
0
威望
2 点
宅币
89 个
贡献
1 次
宅之契约
0 份
在线时间
2 小时
注册时间
2015-11-25
发表于 2015-11-25 16:49:33 | 显示全部楼层
;P;P;P;P;P;P;P;P;P
回复

使用道具 举报

0

主题

5

帖子

116

积分

用户组: 小·技术宅

UID
1303
精华
0
威望
11 点
宅币
89 个
贡献
0 次
宅之契约
0 份
在线时间
10 小时
注册时间
2015-12-2
发表于 2015-12-9 23:44:24 | 显示全部楼层
这太有趣了...哈哈 研究下~

13

主题

76

帖子

1245

积分

用户组: 上·技术宅

UID
888
精华
0
威望
0 点
宅币
302 个
贡献
867 次
宅之契约
0 份
在线时间
36 小时
注册时间
2015-5-31
发表于 2016-5-16 19:14:38 | 显示全部楼层
再来温习一下

0

主题

1

帖子

8

积分

用户组: 初·技术宅

UID
2277
精华
0
威望
1 点
宅币
5 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-2-23
发表于 2017-2-23 19:45:49 | 显示全部楼层
感謝大大的分想 正須要

1043

主题

2335

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
217
威望
294 点
宅币
18229 个
贡献
36857 次
宅之契约
0 份
在线时间
1738 小时
注册时间
2014-1-26
 楼主| 发表于 2017-2-23 20:17:37 | 显示全部楼层
best740 发表于 2017-2-23 19:45
感謝大大的分想 正須要

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

2

主题

12

帖子

5128

积分

用户组: 技术宅的结界VIP成员

UID
94
精华
1
威望
3 点
宅币
5095 个
贡献
10 次
宅之契约
0 份
在线时间
12 小时
注册时间
2014-2-28
发表于 2017-2-26 00:59:35 | 显示全部楼层
想看看第二种

0

主题

18

帖子

48

积分

用户组: 初·技术宅

UID
2268
精华
0
威望
1 点
宅币
28 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2017-2-21
发表于 2017-2-27 12:35:25 | 显示全部楼层
学习下看看

1

主题

3

帖子

15

积分

用户组: 初·技术宅

UID
2345
精华
0
威望
0 点
宅币
12 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2017-3-23
发表于 2017-3-23 10:02:13 | 显示全部楼层
楼主功夫了得

0

主题

2

帖子

8

积分

用户组: 初·技术宅

UID
3053
精华
0
威望
1 点
宅币
4 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-11-6
发表于 2017-11-6 09:56:20 | 显示全部楼层
本帖最后由 zbaigao 于 2017-11-6 09:57 编辑

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

0

主题

2

帖子

13

积分

用户组: 初·技术宅

UID
5289
精华
0
威望
0 点
宅币
11 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2019-9-10
发表于 2019-9-10 16:50:04 | 显示全部楼层
学习一下,谢谢楼主

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-9-20 11:44 , Processed in 0.128347 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表