vtkFeatureEdges 类简介

vtkFeatureEdges

【类说明】
提取多边形数据(polygonal data)的边界,非流行、锋利的边缘。

该类是针对输入数据为多边形几何数据的滤波器,提取特定类型的边缘数据。

这些边缘可以是:

  1. 一个多边形的边界 boundary 或者一个 line cell;
  2. 非流形数据 - 三个或者更多的多边形数据;
  3. 特征边(两个三角形的边缘, 三角形的二面角大于特征角)
  4. 流形边(两个多变形的边)

这些边可能是任何组成方式,边也可以是有颜色的。


为了设置颜色,必须给不同的 mapper 实例 设置 ScalarMode, 方法SetScalarModeToUseCellData().

【类继承图】

    

【类协作图】

      

【示例】

一检测一个几何数据是否是闭合的

#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkFeatureEdges.h>

int main(int, char *[])
{
	// Create a sphere
	vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
	sphereSource->Update();

	vtkSmartPointer<vtkFeatureEdges> featureEdges = vtkSmartPointer<vtkFeatureEdges>::New();
	featureEdges->FeatureEdgesOff();				// Turn off the extraction of feature edges. 
	featureEdges->BoundaryEdgesOn();				// Turn on the extraction of boundary edges. 
	featureEdges->NonManifoldEdgesOn();				// Turn on the extraction of non-manifold edges. 
	featureEdges->SetInputConnection(sphereSource->GetOutputPort());
	featureEdges->Update();

	int numberOfOpenEdges = featureEdges->GetOutput()->GetNumberOfCells();

	if(numberOfOpenEdges > 0)
	{
		std::cout << "Surface is not closed" << std::endl;
	}
	else
	{
		std::cout << "Surface is closed" << std::endl;
	}

	return EXIT_SUCCESS;
}

实例二;

提取一个网格集合数据的边缘信息并显示

#include <vtkSmartPointer.h>
#include <vtkFeatureEdges.h>
#include <vtkPolyData.h>
#include <vtkDiskSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkLookupTable.h>

int main(int, char *[])
{
	vtkSmartPointer<vtkDiskSource> diskSource =	vtkSmartPointer<vtkDiskSource>::New();
	diskSource->Update();
	vtkSmartPointer<vtkPolyDataMapper> diskMapper =	vtkSmartPointer<vtkPolyDataMapper>::New();
	diskMapper->SetInputConnection(diskSource->GetOutputPort());
	vtkSmartPointer<vtkActor> diskActor = vtkSmartPointer<vtkActor>::New();
	diskActor->SetMapper(diskMapper);
	
	vtkSmartPointer<vtkFeatureEdges> featureEdges =	vtkSmartPointer<vtkFeatureEdges>::New();
	featureEdges->SetInputConnection(diskSource->GetOutputPort());
	featureEdges->BoundaryEdgesOn();
	featureEdges->FeatureEdgesOff();
	featureEdges->ManifoldEdgesOff();
	featureEdges->NonManifoldEdgesOff();
	featureEdges->SetBoundaryEdges(100);	
	featureEdges->Update();

	vtkSmartPointer<vtkPolyDataMapper> edgeMapper =	vtkSmartPointer<vtkPolyDataMapper>::New();
	edgeMapper->SetInputConnection(featureEdges->GetOutputPort());
	vtkSmartPointer<vtkActor> edgeActor = vtkSmartPointer<vtkActor>::New();
	edgeActor->SetMapper(edgeMapper);	
	
	vtkSmartPointer<vtkRenderer> renderer =	vtkSmartPointer<vtkRenderer>::New();
	vtkSmartPointer<vtkRenderWindow> renderWindow =	vtkSmartPointer<vtkRenderWindow>::New();
	renderWindow->AddRenderer(renderer);
	vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =	vtkSmartPointer<vtkRenderWindowInteractor>::New();
	renderWindowInteractor->SetRenderWindow(renderWindow);

	renderer->AddActor(edgeActor);
	renderer->AddActor(diskActor);
	renderer->SetBackground(.3, .6, .3); // Background color green

	renderWindow->Render();
	renderWindowInteractor->Start();

	return EXIT_SUCCESS;
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vtkCutter是一个用于沿着平面或其他几何体切割数据集的VTK。它可以通过指定切割平面的法线和截面位置来对数据集进行切割。vtkCutter将切割所得的表面输出为数据集,并且还可以通过设置是否生成完整的切割体积数据来进行控制。vtkCutter对于可视化特定部分的数据集或与其他几何体进行交互非常有用。 vtkFeatureEdge是一个用于提取数据集表面的边缘的VTK。它可以识别数据集的边缘,并根据指定的边线型将其输出为数据集或多边形数据。vtkFeatureEdge可用于可视化数据集的边缘或用于分析和处理数据集的表面特征。它对于生成边界轮廓、提取数据集的边缘特征等任务非常有用。 总之,vtkCutter和vtkFeatureEdgeVTK中两个常用的,分别用于切割数据集和提取数据集的边缘。它们在可视化和数据处理中都有广泛的应用,并可以帮助我们更好地理解和分析数据集。 ### 回答2: vtkcutter vtkfeactureedge是两个在VTK(Visualization Toolkit)库中常用的功能模块。 vtkcutter是一个用于切割几何体的模块。它可以根据指定的切割平面,将几何体切割成多个片段。切割结果可以用于创建截面或裁剪模型。该模块可以处理各种型的几何体,包括三角面片、多边形、体素等。使用vtkcutter可以方便地实现对几何体的切割操作,并将结果可视化。 vtkfeactureedge是一个用于提取几何体边缘特征的模块。几何体边缘特征指的是几何体的边界或者具有特殊属性的边界。这些特征可以是曲线、拐角、锐边等。vtkfeactureedge模块可以自动识别并提取这些边缘特征,并根据需要进行可视化或进一步的处理。该模块可以应用于各种领域,包括工程设计、地质勘探等,用于分析和识别几何体的重要边界特征。 综上所述,vtkcutter和vtkfeactureedgeVTK库中常用的功能模块。vtkcutter用于切割几何体,vtkfeactureedge用于提取几何体边缘特征。它们都可以帮助我们处理和分析几何体,为我们的工作提供便利。 ### 回答3: vtkCutter是VTK(Visualization Toolkit)中的一个,用于在给定平面上对数据集进行切割操作。它通过将平面插值到数据集的网格结构中,找到与平面相交的单元格,并计算出交点的位置和属性信息。vtkCutter可以用于各种型的数据集,包括结构化网格和非结构化网格。 vtkFeatureEdges也是VTK中的一个,用于提取数据集中的特征边。特征边是指数据集中连接两个不同属性的单元格的边。vtkFeatureEdges通过计算各个单元格的边界,找到相邻单元格之间的边界,并根据它们的属性判断是否为特征边。vtkFeatureEdges可以用于生成数据集的轮廓线、边界线等特征边信息。 这两个VTK中常用的数据处理工具,可以在可视化领域和科学计算中应用广泛。vtkCutter用于在给定平面上切割数据集,可以根据需要提取数据集的某个区域或者生成切割面。vtkFeatureEdges用于提取数据集的特征边,可以用于分析数据集的拓扑结构,查找边界或者生成轮廓线。 在使用这些时,我们可以根据实际需求设置平面的位置和属性条件,如平面方程、颜色等。同时,我们也可以设置vtkCutter和vtkFeatureEdges的输出型和可视化属性,以满足不同的需求。 总之,vtkCutter和vtkFeatureEdges是VTK数据处理中非常常用的,可以帮助我们实现数据集的切割和特征边提取等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值