我正在尝试在HTML5画布上编写一个流畅的动态模拟器。我发现一些real damn cool东西on the internets总是看起来像一个很有希望的起点,但它们都是基于细胞的,并且使用了一些疯狂的数学。
我希望能够添加任意障碍(任何方向的线条,圆圈等)以使事情更有趣,但我不知道从哪里开始。
有没有人知道一些相当简单的流体模拟方程,包括任何方向的障碍?或者,是否有人能指出我需要采用上述例子中的一个并增加障碍?
我知道这个问题与我应该问的数学倒流有关,但它们似乎更多地涉及理论的东西。如果我在错误的地方,请道歉。我真的不知道从哪里开始 - 如果有人在使用任意障碍物进行流体模拟之前,我可以使用一些指针。
准确性在这里变得简单。
谢谢!
答案 0 :(得分:13)
流体动力学不是一个简单的主题。他们在另一个网站上喜欢的所有“理论”就是这个领域的工作方式。
最简单的流体流动示例是2D, incompressible, irrotational, laminar flow。我会从调查开始。
但这不是一个简单的领域。没有“在十天内自学计算流体动力学”的书籍。
答案 1 :(得分:8)
阅读介绍面向图形的流体模拟的最佳书籍是Robert Bridson的“流体模拟计算机图形学”(免责声明:他是我的博士生导师)。 http://www.cs.ubc.ca/~rbridson/fluidbook/
最终,涉及到大量的数学,但也有大量的代码示例来澄清数学倾向较少的事情。
它主要涵盖您提到的基于细胞的方法。另一个主要的替代方案是“平滑粒子流体动力学”或SPH。如果你想要开始,马蒂亚斯穆勒有一些关于这方面的论文。
答案 2 :(得分:3)
如果你不关心真正的准确性,但只是想要一些swooshy和酷,我开发了一个非常简单的基于压力的模拟,在Javascript中提供了一个非常快速的交互式界面。你可以看到它here。
答案 3 :(得分:3)
以下是您需要了解的有关流体动力学和模拟的所有内容的相当不错的列表: http://www.dgp.toronto.edu/~stam/reality/Research/pub.html
此外,您应该检查this站点,在那里您可以找到用Java编写并传输到Actionscript3的具体源代码。它已经很好地记录了,因此传输到Javascript不应该是一个问题。
答案 4 :(得分:-1)
我已经试过了,只是为了让你知道有任何一种称为Projection的流体模拟的一个重要部分,即使在CPU上计算量也很大,它需要很多,你可能知道Javascript很慢很多原因。