vtk 曲线 样式_VTK教程之九 可视化基础算法-二维轮廓线(等值线)提取

本文介绍了如何使用VTK库提取二维轮廓线(等值线),特别是针对规则网格数据集。通过移动四边形算法,确定属性值并比对网格单元,找出边界点,最终连接成边界区域。示例代码展示了创建网格、设置属性值、提取等值线5的边界,并用黄色线条显示。VTK中的vtkContourFilter类用于实现这一功能。
摘要由CSDN通过智能技术生成

二维轮廓线(等值线)提取属于标量可视化技术范围,常用于提取一个研究区域的轮廓边界,如在气象中应用中,常根据气象卫星或数值模拟的结果,按照每个地理位置点确定的属性值,分析区域内的降雨情况,提取不同降雨量的区域边界(如大雨、中雨、小雨的区域边界),在有限元分析中,常用于提取位移等值线等,在VTK中轮廓线提取功能主要面对的是规则网格数据集,对于非规则网格数据,必须要进行插值计算,生成规则网格数据集,由于规则网格数据其构成单元为正方形或长方形,所以提取轮廓线常采用移动四边形法(Marching

Squares),该方法为移动立方体算法(Marching

Cubes)的二维表达,因为本文是以实用性为主,所以对这些算法的理论不加以详细介绍,有关该方法的详细信息请参考《三维数据场可视化》(唐圣泽等著)这本书,本文从实用性的角度,对该方法做一个说明,该方法的主要核心是:

1、 定义规则网格数据顶点的属性值

2、 确定提取区域的属性值

3、 用提取区域的属性值和每个网格数据的每个单元进行比对,确定其是否在该单元内,如果在该单元内,要用插值的方法确定其和该单元边界的交点,然后继续比对下一个单元,如果不在该单元内,继续比对下一个单元。

4、 将各个单元的交点相连成线,即为边界区域。

下图给出了一个比对的示意:

在该示意图中,提取属性值为5的边界区域,假设从左到从上到下依次为单元编号,图中共有16个单元,构成第一个单元4个顶点按逆时针排列的属性值分别为0、1、3、1,均小于5,则该单元没有要提取的边界点,第一个单元顶点按逆时针排列的顺序为1、3、6、1,在3、6边及6、1边上分别有交点,计算出交点位置,依次对比各个单元,最终得到提取区域的边界,如,图中实线所画的闭合曲线就是提取的边界。

下面,以这个示意图数据为例,说明如何用VTK提供的功能提取轮廓线,以网格中心点为坐标原点,网格间距假设为一个单位,可确定各个顶点的坐标,示例代码如下:

#include "stdafx.h"

#include "vtkActor.h"

#include "vtkCamera.h"

#include "vtkCellArray.h"

#include "vtkFloatArray.h"

#include "vtkPointData.h"

#include

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值