SPH算法简介(四):Hello,SPH

2011年04月2日  |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com

上几节,我们推导出一大推复杂无比的公式,似乎有点纸上谈兵,这节来点真的,写一个可以运行的SPH系统,下面就是SPH基本的运算流程

  1. 初始化粒子,为每个粒子赋上初始位置
  2. 根据公式3.7计算每个粒子的密度
  3. 根据公式3.10计算每个粒子的压强
  4. 根据公式3.18计算每个粒子的加速度
  5. 根据临界条件调整加速度
  6. 根据加速度计算每个粒子的速度变化
  7. 根据速度计算粒子位置的变化
  8. 绘制粒子
  9. 回到步骤2

下面有个简单的示例程序,运行效果如下

    这个程序基本上没有怎么考虑效率,只是让系统跑起来,所以比较适合拿来对照公式学习,按照惯例,放出源代码和可执行程序
    源码下载:fluid_src.zip(394KB)
    Update(2011-04-07): 更新,去掉了工程文件里对CUDA的引用,感谢网友提醒
    源码下载:fluid_source.zip(395KB)
    可执行程序下载: fluid.zip(120KB)
    SPH还有很多细节值得讨论,比如表面张力、并行计算、构建网格、真实材质的水渲染等,这些部分我会抽时间再写一些东西出来介绍。

转载自:http://www.thecodeway.com/blog/?p=1778

SPH算法简介(四):Hello,SPH相关推荐

  1. SPH算法简介: 对我的启蒙

    转自: https://thecodeway.com/blog/?p=83 https://thecodeway.com/blog/?p=139 https://thecodeway.com/blog ...

  2. SPH算法简介(一): 数学基础

    SPH算法简介(一): 数学基础 2011年03月30日  |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com SPH(Smoothed Particle Hydrodyna ...

  3. SPH算法简介(二): 粒子受力分析

    SPH算法简介(二): 粒子受力分析 2011年03月31日  |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com     SPH算法的基本设想,就是将连续的流体想象成一个个 ...

  4. SPH算法简介(四): Hello, SPH

    [原文链接:https://thecodeway.com/blog/?p=204] 上几节,我们推导出一大推复杂无比的公式,似乎有点纸上谈兵,这节来点真的,写一个可以运行的SPH系统,下面就是SPH基 ...

  5. SPH算法简介(三): 光滑核函数

    [原文链接:https://thecodeway.com/blog/?p=161] 补充数学知识:标量对于向量求梯度,即以向量的模为未知量求梯度的结果乘以一个向量的单位向量 和其他流体力学中的数学方法 ...

  6. SPH算法(求最小代价树)

    一.sph算法简介 1.最小代价树算法 SPH算法也叫做MPH( minimum path heuristic)算法, 用于构造时延约束最算法小代价组播树. 该算法中每 个目的结点通过与当前组播树有最 ...

  7. SPH算法的理论和实践(2)

    2单流体SPH算法实现 经过前一章的介绍,知道了SPH算法的原理,这一章我们介绍SPH算法的代码具体实现 2.1算法框架 SPH算法的思想是用粒子来模拟流体,其中粒子承载了各种属性(如 位置.速度.加 ...

  8. SPH(光滑粒子流体动力学)流体模拟实现二:SPH算法(4)-算法实现1

    流体模拟(二) SPH算法实现1: 由于我们计算每个粒子的状态时,都需要获得在它光滑核半径内(邻域内)的所有粒子信息.我们如果遍历每个粒子,计算欧式距离的话,那开销就过于庞大了.因此我们可以将我们的空 ...

  9. SPH(光滑粒子流体动力学)流体模拟实现二:SPH算法(4)-算法实现2

    流体模拟(二) SPH算法实现2: 在前面一节我们完成了粒子缓存类,网格类和邻接表类.我们现在可以正式的整合在我们的流体系统类中了. 流体系统类 class FluidSystem{public:Fl ...

最新文章

  1. 【ubuntu】在ubuntu下无法输出拼音输入法中的中括号“【” 和 “】”的解决方法
  2. 漫画:什么是 “建造者模式” ?
  3. 17.观察者模式(Observer Pattern)
  4. 在新的固态硬盘只装ubuntu16.04系统,重启后无启动项解决方案
  5. 排序算法之冒泡排序(JAVA)
  6. 用户空间与内核空间,进程上下文与中断上下文[总结]【转】
  7. SENT协议(SAE-J2716)
  8. 实验六 Linux下文件程序设计
  9. php office 在线预览,在线预览pdf和Office文档
  10. 移动手机号服务密码重置
  11. IsKindOf的用法简介
  12. 算法策略 | MACD跨周期短线交易策略开发(股指+商品双版)
  13. 屏幕录制专家linux版,Linux平台好用的十款屏幕录制工具
  14. 三次方程求根公式例子
  15. 任务型对话(二)—— DST(对话状态追踪)
  16. 异常:Incorrect result size: expected 1, actual 0
  17. 将yolov5的detect.py改写成可以供其他程序调用的方式,并实现低时延(<0.5s)直播推理
  18. 戴尔微型计算机电池位置,DELL 戴尔Latitude 5480拆机换电池
  19. MATLAB图形加标注的基本方法入门简介
  20. 骁龙8cxgen3相当于英特尔多少 骁龙8cxgen3性能

热门文章

  1. 三种数据库的 SQL 注入详解
  2. 嵌入式系统开发笔记81:嵌入式系统的本质
  3. 什么是自然语言处理,自然语言处理目前的应用有哪些?
  4. 274. H 指数(中)
  5. Office 2007重新输入序列号激活
  6. 单词快速记忆day40
  7. kubeadm部署k8s直接证书100年
  8. zk4元年拆解_耐克ZK5 Protro 科五复刻“减配”?可能你根本不懂曼巴心意!
  9. Linux RS232驱动实验
  10. 大学生为什么要学Linux?Linux有什么优点?