gpt4 book ai didi

algorithm - 高度图的离散流体 "filling"算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:47:28 25 4
gpt4 key购买 nike

我正在寻找一种算法来描述流体在高度图表面扩散时的 transient 行为。我在 t=0 时的起始条件是:

  • 大小为 [x, y] 的高度值 (H) 的二维矩阵
  • 大小为 [x, y] 的流体高度值 (F) 的二维矩阵
  • 矩阵(a)中每个点的面积度量,即每个位置为1 cm^2
  • 流体的粘度值 (u)

我想要的是一种算法,可以在 t'=t+1 时计算流体高度矩阵 F 的新值。在任何时候,我都可以通过 v = a * (F(x,y) - H(x, y)) 计算给定点的流体体积。该算法的理想特性是:

  • 它不需要考虑每个点的流体柱顶部或底部的“斜率”或“形状”。即它可以将高度图中的每个值视为描述一个特定高度的扁平正方形,并将流体高度图中的每个值视为顶部平坦的矩形水柱
  • 如果遇到“排水管”(即高度图中的一个非常低的点), map 所有部分的流体都可能受到影响,因为它被拉向它。

我正在寻找的一个简单示例是:

  • 一个 5x5 高度图矩阵,其中所有值为 0
  • 一个 5x5 流体高度贴图矩阵,其中除 [2, 2] 之外的所有值为 0,即 10。
  • 每个点的面积为 1 m^2
  • u的粘度

该算法将描述在多个时间步长内在 5x5 矩阵上散布的流体“列”。最终算法会在所有位置稳定在 10/25 的统一高度,但我真的很想知道这两者之间发生了什么。

我曾尝试搜索这种算法,但我所能找到的只是描述流体内部粒子行为的方程式,对于我的目的而言,这些方程式过于细化。有谁知道我可以引用这个问题的任何好的资源,或者可以满足我需要的现有算法。

最佳答案

O is your starting fluid-column
o are diffusing columns
************************
X X X X X

X X X X X

X X O X X

X X X X X

X X X X X
************************
--Get the Laplacian of the heights of each neighbour and accumulate results
in a separate matrix
--Then apply the second matrix into first one to do synchronous diffusion
--go to Laplacian step again and again


************************
X X X X X

X X o X X

X o O o X

X X o X X

X X X X X
************************


************************
X X . X X

X . o . X

. o O o .

X . o . X

X X . X X
************************
************************
X X . X X

X o o o X

. o o o .

X o o o X

X X . X X
************************


************************
X X . X X

X o o o X

. o o o .

X o o o X

X X . X X
************************

************************
X . o . X

. o o o .

o o o o o

. o o o .

X . o . X
************************
************************
. . . . .

. o o o .

. o o o .

. o o o .

. . . . .
************************
************************
. . . . .

. . . . .

. . o . .

. . . . .

. . . . .
************************
************************
. . . . .

. . . . .

. . . . .

. . . . .

. . . . .
************************
sorry for very low height-resolution

Laplacian

Laplacian's place in diffusion

Diffusion's place in Navier-Stokes equations

Discrete Laplace Operator

简单算法(伪):

get a cell's value in a.
get neighbour cells' values in b(sum of them)
put b/4.0 in c(getting 4 cells' values)
add a to c
build a matrix with this algorithm
apply the matrix onto old one
goto step 1

更难的算法(伪):

apply discrete-Laplacian-operator on all neighbours(finite-differences thing)
put solution in c height-map
subtract or add c to/from starting height-map
goto step 1

Jos Stam's fluid-solver扩散部分也有类似的情况。

关于algorithm - 高度图的离散流体 "filling"算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com