VTK曲线等分
利用样条实现VTK曲线等分,能够将输入的VTK曲线(由直线线段组成,顶点之间分等距),等分后得到顶点等距的相同曲线。
效果预览
- 曲线:
- 等分后顶点:红色顶点为等分曲线 上的顶点
方法描述
输入:算法作用对象是vtkLineSource直线模型或者是以vtkLine为cell单位的模型。
方法:利用模型数据生成样条,再对样条设置细分参数 (关于VTK各种样条的介绍可以看我博客内的另一篇文章)
输出:等分后的模型数据
核心代码:
//输入vtkLineSource为line
vtkSmartPointer<vtkPolyData> polyData = line->GetOutput();
int numOfSub = 50;
//生成样条
vtkSmartPointer<vtkSplineFilter> splineFilter = vtkSmartPointer<vtkSplineFilter>::New();
splineFilter->SetInputData(polyData);
if (this->numOfSub == -1)
{
splineFilter->SetNumberOfSubdivisions(polyData->GetNumberOfPoints());
}
else
{
splineFilter->SetNumberOfSubdivisions(numOfSub);
}
splineFilter->Update();
vtkSmartPointer<vtkTriangleFilter> spline = vtkSmartPointer<vtkTriangleFilter>::New();
spline->SetInputConnection(splineFilter->GetOutputPort());
spline->Update();
//输出spline->GetOutput();