vtk 将点用线连接起来显示

vtkPoints *pPoints = vtkPoints::New();
//此处构建pPoints数据

vtkPolyLine *polyLine = vtkPolyLine::New();
polyLine->GetPointIds()->SetNumberOfIds(pPoints->GetNumberOfPoints());
for(int i = 0; i < pPoints->GetNumberOfPoints(); i++)
{
	polyLine->GetPointIds()->SetId(i, i);
}

vtkUnstructuredGrid *grid = vtkUnstructuredGrid::New();
grid->Allocate(1, 1);
grid->InsertNextCell(polyLine->GetCellType(), polyLine->GetPointIds());
grid->SetPoints(pPoints);

vtkDataSetMapper *mapper = vtkDataSetMapper::New();
mapper->SetInputData(grid);

vtkActor *actor = vtkActor::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetColor(1.0, 0.0, 0.0); //设置颜色

然后将actor加入到render中显示
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VTK中提取等值面的等值线,可以使用vtkContourFilter类。vtkContourFilter是一种数据过滤器,可以从输入数据集中提取等值线,并生成等值面。以下是使用vtkContourFilter提取等值面的等值线的C++代码实现: ```c++ #include <vtkSmartPointer.h> #include <vtkContourFilter.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkXMLImageDataReader.h> int main(int argc, char* argv[]) { // 读取图像数据 vtkSmartPointer<vtkXMLImageDataReader> reader = vtkSmartPointer<vtkXMLImageDataReader>::New(); reader->SetFileName("volume.vti"); reader->Update(); // 提取等值面的等值线 vtkSmartPointer<vtkContourFilter> contourFilter = vtkSmartPointer<vtkContourFilter>::New(); contourFilter->SetInputConnection(reader->GetOutputPort()); contourFilter->SetValue(0, 200); // 等值参数为200 // 显示等值线 vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(contourFilter->GetOutputPort()); mapper->ScalarVisibilityOff(); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); // 创建渲染器和窗口 vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(actor); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); // 创建交互器并启动渲染 vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); interactor->SetRenderWindow(renderWindow); interactor->Initialize(); renderWindow->Render(); interactor->Start(); return 0; } ``` 在上面的代码中,我们首先使用vtkXMLImageDataReader读取了一个VTI格式的图像数据集。然后,我们使用vtkContourFilter提取了等值面的等值线,并将其输出连接到vtkPolyDataMapper的输入端。最后,我们创建了一个vtkActor对象,并将vtkPolyDataMapper设置为其Mapper属性。我们使用vtkRenderWindow和vtkRenderer显示了等值线,并使用vtkRenderWindowInteractor启动了渲染。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值