我是游戏物理学的新手。我有一个问题,我有一个二维或三维网格。计算单元分别为三角形或四面体。某些物理量,如密度和能量,在细胞中心以细胞为中心的平均值给出。我需要在网格中所有单元的中心计算这些量的梯度。
我知道在1D中,单元格(i)中的量的导数可以通过将相邻单元格(i+1,i-1)中该量的值的差除以它们之间的距离(中心差分公式)来计算。我不明白的是在任意的2D或3D网格上解决这个问题?
我可以参考一些文献,在那里我可以得到这样的数值方法/算法吗?
提前谢谢。
发布于 2014-01-26 03:46:27
在考虑网格上的微分运算符时,This paper是一个很好的起点。它没有进入体积网格(如果我记得的话),但这是一个很好的开始。特别是,本文提出了一种合理的选择,从离散微分几何观点(DDG)的顶点分配梯度,您可以使用重心坐标来计算小平面内部的梯度场。
发布于 2014-01-29 19:27:22
多元函数的导数是一个向量。为了简单起见,让我们假设我们正在处理一个2d网格,那么导数就是一个2d向量。为了进一步简化,让我们取位置(x,y)=(0,0)处的导数。要开始,您必须识别所有相邻的单元格,它们的中心为(x1,y1),(x2,y2)...和values z1,z2,...。您也可以根据距离为每个单元格分配一个(非负)权重,例如wk=(d*d - xk*xk - yk*yk) d这里要考虑的相邻单元格的最大距离。然后使用线性回归近似所有这些相邻的值:z = vx*x+vy*y + z0。通过最小二乘回归得到vx,vy,z0的值:
最小化Sum_kwk * (zk - vx*xk - vy*yk - z0)^2
其中索引k遍历所有邻居。向量(vx,vy)是您要查找的导数。
发布于 2014-01-26 03:23:52
网格中多边形的导数是多边形的平面,如果你需要更细粒度的,那么可以用几种不同的方法,你可以通过平均和加权相邻的多边形来估计它。
https://stackoverflow.com/questions/21355096
复制相似问题