圆形网格密度均匀

时间:2016-07-11 18:47:03

标签: c++ opengl

如何生成圆形网格,由具有均匀区域/顶点均匀分布的切片组成?

我需要在程序的每一帧将拉普拉斯算子应用于网格。

使用矩形网格很容易应用拉普拉斯算子,矩形网格的位置是用笛卡尔坐标指定的,因为对于(i,j)的图块,我知道它的相邻图块的位置是(i-1, j),(i,j-1),(i + 1,j)和(i,j + 1)。

虽然我想使用极坐标,但我不确定查询瓷砖的邻域是否一样容易。

我在OpenGl工作,可以渲染三角形或点。三角形似乎更有效(并且具有在它们的顶点之间填充区域的良好效果),但似乎更适合于笛卡尔坐标。也许我可以渲染点,然后极坐标可以正常工作?

另一个问题是瓷砖的密度。我希望在这个网格表面上行进的波浪具有相同的分辨率,无论它们是否在中心。

因此,两个主要问题是:以允许轻松查询切片邻域的方式生成网格,并以保持切片均匀密度分布的方式。

3 个答案:

答案 0 :(得分:-1)

我认为你要求的是不可能的东西。

然而,this是一种将常规方形2D网格重新映射为具有相对较低翘曲量的圆形的技术。这可能足以解决您的问题。

答案 1 :(得分:-1)

您可能需要查看this paper,它已写入示例范围,但您可以将其调整为圆形。

答案 2 :(得分:-1)

一个选项可以是使用具有恒定角度步长但是径向步长变化的极坐标网格,以便所有单元格具有相同的面积,即(R + dR)²-R²= Cst,从而得到作为R的函数的dR

您可能希望通过不时地改变细胞数来减少各向异性(一些细胞变得非常细长)(f.i.通过加倍)。这将在网格中引入奇点,即具有五个顶点而不是四个顶点的单元格。

参见https://mathematica.stackexchange.com/questions/78806/ndsolve-and-fem-support-for-non-conformal-meshes-of-a-disk-with-kernel-crash

中的数字