Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用vtkDistancePolyDataFilter计算距离_C++_Mesh_Vtk - Fatal编程技术网

C++ 使用vtkDistancePolyDataFilter计算距离

C++ 使用vtkDistancePolyDataFilter计算距离,c++,mesh,vtk,C++,Mesh,Vtk,我是VTK的新手。下面是使用vtkDistancePolyDataFilter计算两个曲面网格之间的顶点到顶点距离的代码片段 vtkSmartPointer<vtkDistancePolyDataFilter> Normal_distances = vtkSmartPointer<vtkDistancePolyDataFilter>::New(); Normal_distances->SetInput(testSample ); Normal_distances-&

我是VTK的新手。下面是使用vtkDistancePolyDataFilter计算两个曲面网格之间的顶点到顶点距离的代码片段

vtkSmartPointer<vtkDistancePolyDataFilter> Normal_distances = vtkSmartPointer<vtkDistancePolyDataFilter>::New();
Normal_distances->SetInput(testSample );
Normal_distances->SetInput(1,bestModelReconstruction);
Normal_distances->SignedDistanceOff();
Normal_distances->Update();
vtkSmartPointer Normal_distance=vtkSmartPointer::New();
正常距离->设置输入(testSample);
正常距离->设置输入(1,最佳模式重建);
正常距离->SignedDistanceOff();
正常距离->更新();

我想访问输出“正常距离”中的距离,以便计算距离的平均值。有人能帮我找到一个快速的方法来实现这一点吗?提前感谢

我个人没有使用过此过滤器,但通常在vtk中,您可以通过
GetOutput()
(或类似的,取决于版本)成员函数访问过滤器的结果

是如何使用
vtkDistancePolyDataFilter
的示例。在这种情况下,输出将是一个
vtkPolyData
,其中计算的距离用于标量 点的值

从示例中可以看出:

  vtkSmartPointer<vtkPolyDataMapper> mapper =
    vtkSmartPointer<vtkPolyDataMapper>::New();
  mapper->SetInputConnection( distanceFilter->GetOutputPort() );
  mapper->SetScalarRange(
    distanceFilter->GetOutput()->GetPointData()->GetScalars()->GetRange()[0],
    distanceFilter->GetOutput()->GetPointData()->GetScalars()->GetRange()[1]);
vtksmart指针映射器=
vtkSmartPointer::New();
映射器->设置输入连接(距离过滤器->GetOutputPort());
映射器->设置Calarrange(
距离过滤器->GetOutput()->GetPointData()->GetScalars()->GetRange()[0],
距离过滤器->GetOutput()->GetPointData()->GetScalars()->GetRange()[1]);

解决了我的问题:首先将
vtkDistancePolyDataFilter
转换为
vtkPolyData
,然后剩下的就是通常的管道。

谢谢A.E.Drew。我认为我的问题更多地与我可以使用哪种类型来提取输出有关。我的意思是类似于您示例中的mapper A.E.Drews解决了我的问题:首先将vtkDistancePolyDataFilter转换为vtkPolyData,然后剩下的是通常的管道。