VTK 实例59:加入边界限制的三角剖分(表面重建)


1 #include <vtkAutoInit.h> 2 VTK_MODULE_INIT(vtkRenderingOpenGL2); 3 VTK_MODULE_INIT(vtkRenderingFreeType); 4 VTK_MODULE_INIT(vtkInteractionStyle); 5 6 #include <vtkSmartPointer.h> 7 #include <vtkProperty.h> 8 #include <vtkPolygon.h> 9 #include <vtkCellArray.h> 10 #include <vtkPoints.h> 11 #include <vtkPolyData.h> 12 #include <vtkPointData.h> 13 #include <vtkDelaunay2D.h> 14 #include <vtkMath.h> 15 #include <vtkPolyDataMapper.h> 16 #include <vtkActor.h> 17 #include <vtkRenderWindoh> 18 #include <vtkRenderer.h> 19 #include <vtkRenderWindowInteractor.h> 20 #include <vtkVertexGlyphFilter.h> 21 22 int main(int, char *[]) 23 34 } 35 36 vtkSmartPointer<vtkPolyData> polydata = 37 vtkSmartPointer<vtkPolyData>::New(); 38 polydata>SetPoints(points); 39 40 vtkSmartPointer<vtkPolygon> poly = 41 vtkSmartPointer<vtkPolygon>::New(); 42 /*poly>GetPointIds()>InsertNextId(22); 43 poly>GetPointIds()>InsertNextId(23); 44 poly>GetPointIds()>InsertNextId(24); 45 poly>GetPointIds()>InsertNextId(25); 46 poly>GetPointIds()>InsertNextId(35); 47 poly>GetPointIds()>InsertNextId(45); 48 poly>GetPointIds()>InsertNextId(44); 49 poly>GetPointIds()>InsertNextId(43); 50 poly>GetPointIds()>InsertNextId(42); 51 poly>GetPointIds()>InsertNextId(32);*/ 52 53 poly>GetPointIds()>InsertNextId(32); 54 poly>GetPointIds()>InsertNextId(42); 55 poly>GetPointIds()>InsertNextId(43); 56 poly>GetPointIds()>InsertNextId(44); 57 poly>GetPointIds()>InsertNextId(45); 58 poly>GetPointIds()>InsertNextId(35); 59 poly>GetPointIds()>InsertNextId(25); 60 poly>GetPointIds()>InsertNextId(24); 61 poly>GetPointIds()>InsertNextId(23); 62 poly>GetPointIds()>InsertNextId(22); 64 vtkSmartPointer<vtkCellArray> cell = 65 vtkSmartPointer<vtkCellArray>::New(); 66 cell>InsertNextCell(poly); 67 68 vtkSmartPointer<vtkPolyData> boundary = 69 vtkSmartPointer<vtkPolyData>::New(); 70 boundary>SetPoints(points); 71 boundary>SetPolys(cell); 72 73 vtkSmartPointer<vtkDelaunay2D> delaunay = 74 vtkSmartPointer<vtkDelaunay2D>::New(); 75 delaunay>SetInputData(polydata); 76 delaunay>SetSourceData(boundary); 77 delaunay>Update(); 78 79 vtkSmartPointer<vtkVertexGlyphFilter> glyphFilter = 80 vtkSmartPointer<vtkVertexGlyphFilter>::New(); 81 glyphFilter>SetInputData(polydata); 82 glyphFilter>Update(); 83 84 vtkSmartPointer<vtkPolyDataMapper> pointsMapper = 85 vtkSmartPointer<vtkPolyDataMapper>::New(); 86 pointsMapper>SetInputData(glyphFilter>GetOutput()); 87 88 vtkSmartPointer<vtkActor> pointsActor = 89 vtkSmartPointer<vtkActor>::New(); 90 pointsActor>SetMapper(pointsMapper); 91 pointsActor>GetProperty()>SetPointSize(3); 92 pointsActor>GetProperty()>SetColor(1,0,0); 93 94 vtkSmartPointer<vtkPolyDataMapper> triangulatedMapper = 95 vtkSmartPointer<vtkPolyDataMapper>::New(); 96 triangulatedMapper>SetInputData(delaunay>GetOutput()); 97 98 vtkSmartPointer<vtkActor> triangulatedActor = 99 vtkSmartPointer<vtkActor>::New(); 100 triangulatedActor>SetMapper(triangulatedMapper); 101 102 vtkSmartPointer<vtkRenderer> renderer = 103 vtkSmartPointer<vtkRenderer>::New(); 104 renderer>AddActor(pointsActor); 105 renderer>AddActor(triangulatedActor); 106 renderer>SetBackground(1.0, 1.0, 1.0); 107 108 vtkSmartPointer<vtkRenderWindow> renderWindow = 109 vtkSmartPointer<vtkRenderWindow>::New(); 110 renderWindow>AddRenderer(renderer); 111 112 vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = 113 vtkSmartPointer<vtkRenderWindowInteractor>::New(); 114 renderWindowInteractor>SetRenderWindow(renderWindow); 115 116 renderWindow>SetSize(640, 480); 117 renderWindow>Render(); 118 renderWindow>SetWindowName("PolyDataConstrainedDelaunay2D"); 119 renderWindow>Render(); 120 renderWindowInteractor>Start(); 121 122 return EXIT_SUCCESS; 123 }



上一篇:VTK 实例68:体绘制透明度调整

下一篇:ITK 实例2 MHA格式文件进行三维线性映射


VTK
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图