2024-05-20 07:16:24 发布
网友
我试图理解一段来自paper concerning fluid simulations for games的代码。我在看边界条件的求解方法。因为我对C++没有任何了解,所以我有额外的困难。在
据我所知:
IX(i, j)表示位于x方向i处、y方向j的二维网格单元
IX(i, j)
i
j
u[IX(i, j)]是(i,j)细胞中的速度
u[IX(i, j)]
以下宏用于IX(i, j):
#define IX(i, j) ((i) + (N + 2) * (j))
我不想把整篇文章都翻一遍,但我可以解释一下 语法,并对发生的事情做一些有根据的猜测。在
#define IX(i,j) ((i)+(N+2)*(j))
在我看来他们在转换二维坐标 i,j转换为一维数组索引。j是行号,i 是与您的描述相符的列号,以及总数 列数是N+2。在
i,j
N+2
然后我们有了这个:
x[IX(0,i)] = b==1 ? -x[IX(1,i)] : x[IX(1,i)]
在C中,a ? b : c表示如果a,b,否则C。这是一个 值是b或{},这取决于{}是否为真。 它被称为三元运算符,请阅读更多here。在
a ? b : c
b
Python有自己的三元运算符,操作数在不同的 顺序:
因此x[IX(0,i)] = b==1 ? -x[IX(1,i)] : x[IX(1,i)]相当于 说:
if (b == 1) x[IX(0,i)] = -x[IX(1,i)] else x[IX(0,i)] = x[IX(1,i)]
所以,在第i行中,第0列的新值是第1列的值, 可能被否定了。看看第10页,这似乎有点关系 有边界。这是在左边,所以我们把它设置为 一个单元格向内的值,或该值的反值,取决于b。在
希望这能让事情有所好转。在
我不想把整篇文章都翻一遍,但我可以解释一下 语法,并对发生的事情做一些有根据的猜测。在
在我看来他们在转换二维坐标
^{pr2}$i,j
转换为一维数组索引。j
是行号,i
是与您的描述相符的列号,以及总数 列数是N+2
。在然后我们有了这个:
在C中,},这取决于{}是否为真。
它被称为三元运算符,请阅读更多here。在
a ? b : c
表示如果a,b,否则C。这是一个 值是b
或{Python有自己的三元运算符,操作数在不同的 顺序:
^{4}$因此
x[IX(0,i)] = b==1 ? -x[IX(1,i)] : x[IX(1,i)]
相当于 说:所以,在第
i
行中,第0列的新值是第1列的值, 可能被否定了。看看第10页,这似乎有点关系 有边界。这是在左边,所以我们把它设置为 一个单元格向内的值,或该值的反值,取决于b
。在希望这能让事情有所好转。在
相关问题 更多 >
编程相关推荐