VtkPolyData的镜像操作

来源:互联网 发布:如何学习编程语言 编辑:程序博客网 时间:2024/05/19 19:59

以下代码完成了vtkPolyData沿x轴的镜像变换

void MirrorPolydata(vtkSmartPointer<vtkPolyData> &polyData){    int nAxis = 0;    double bounds[6];    polyData->GetBounds(bounds);    double adjust[3] = {0, 0, 0};    adjust[nAxis] = (bounds[nAxis * 2] + bounds[nAxis * 2 + 1]);    double dir[3] = {1, 1, 1};    dir[nAxis] = -1;    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();    int nPointsNum = polyData->GetNumberOfPoints();    for (int i = 0; i < nPointsNum; ++i)    {        double point[3];        polyData->GetPoint(i, point);        points->InsertNextPoint(            point[0] * dir[0] + adjust[0],            point[1] * dir[1] + adjust[1],            point[2] * dir[2] + adjust[2]);    }    polyData->SetPoints(points);    polyData->GetPointData()->SetNormals(NULL);}

效果如下:
这里写图片描述
镜像前
这里写图片描述
镜像后

原创粉丝点击