使用ParaView软件,可以从代表地形高程的点数据创建由三角形构成的面。
这里使用的样本数据是123
.particles
。这个地形数据由abc山的点群数据组成,包含(x,y,z)坐标。*.particles
是VTK粒子文件格式。
首先,加载圣海伦斯山的点群数据。启动ParaView,然后从工具栏选择:
File > Open...
在文件指定对话框中指定123.particles并加载,将显示如下的山的点群。这是一个相对密集的点群,但不像结构化网格点数据那样有规律性。变量Scalar是每个点的节点编号,但它们是不规则分布的。
这里使用二维Delaunay三角剖分来创建面,但点数据是三维的,所以不能直接应用二维Delaunay三角剖分。
因此,先将点数据投影到x-y平面上。
首先,使用"Calculator"(计算器)创建z坐标的变量数据"z"。
点击工具栏上的"Calculator"图标,然后像下图左侧那样设置,然后点击"Apply"(应用)。
接下来,使用创建的"z"变量,通过"Warp By scalar"(按标量扭曲)过滤器将点群投影到x-y平面上。
从工具栏选择:
Filters > Alphabetical > Warp By scalar
根据ParaView的版本,设置如下:
(对于V.5.1.0及以前的版本:)
o Scalars: z
o Scale Factor: -1
o Normal: 0 0 1
(对于V.5.1.1及以后的版本:)
o Scalars: z
o Scale Factor: 1
o Normal: 0 0 -1
点击"Apply"(应用),点群数据将被投影到x-y平面上。
对x-y平面上的点群数据应用二维Delaunay三角剖分,创建三角形面。
从工具栏选择:
Filters > Alphabetical > Delaunay 2D
保持默认设置,点击"Apply"(应用)。
可以看到,对于二维点群,已经创建了三角形面。
现在,将投影到x-y平面上的形状恢复为三维数据。使用变量"z"和"Warp By scalar"(按标量扭曲)过滤器反向恢复。
从工具栏选择:
Filters > Alphabetical > Warp By scalar
确认设置如下:
· Scalars: z
· Scale Factor: 1
· Normal: 0 0 1
点击"Apply"(应用),二维表面将变成三维的表面三角形。
在这个例子中,因为形状是凸的,所以没有产生不必要的三角形。但如果形状是凹形的,就需要删除不必要的三角形。
通常,可能需要使用约束Delaunay方法来裁剪边界,但如果点群排列得很规则,可能只需要移除质量差的三角形。
· 使用"MeshQuality"(网格质量)过滤器,用Aspect Ratio(长宽比)计算"Triangle Quality Measure"(三角形质量度量)
· 使用"Threshold"(阈值)过滤器,只保留具有良好长宽比的三角形