24 lines
1.3 KiB
Markdown
24 lines
1.3 KiB
Markdown
---
|
||
title: " SPH算法简介(四): 算法实现"
|
||
tags: 数学 流体 程序 算法
|
||
---
|
||
上几节,我们推导出一大推复杂无比的公式,似乎有点纸上谈兵,这节来点真的,写一个可以运行的SPH系统,下面就是SPH基本的运算流程
|
||
|
||
1. 初始化粒子,为每个粒子赋上初始位置
|
||
2. 根据公式3.7计算每个粒子的密度
|
||
3. 根据公式3.10计算每个粒子的压强
|
||
4. 根据公式3.18计算每个粒子的加速度
|
||
5. 根据临界条件调整加速度
|
||
6. 根据加速度计算每个粒子的速度变化
|
||
7. 根据速度计算粒子位置的变化
|
||
8. 绘制粒子
|
||
9. 回到步骤2
|
||
下面有个简单的示例程序,运行效果如下
|
||
|
||

|
||
|
||
这个程序基本上没有怎么考虑效率,只是让系统跑起来,所以比较适合拿来对照公式学习,按照惯例,放出源代码和可执行程序
|
||
Github:[https://github.com/thejinchao/fluid](https://github.com/thejinchao/fluid)
|
||
可执行程序下载: [fluid_relase_x64.zip](https://github.com/thejinchao/fluid/releases/download/v1.0/fluid_relase_x64.zip)(132KB)
|
||
SPH还有很多细节值得讨论,比如表面张力、并行计算、构建网格、真实材质的水渲染等,这些部分我会抽时间再写一些东西出来介绍。
|