선분 그리기
1. vtkPolyData 객체 생성
vtkSmartPointer<vtkPolyData> linesPolyData = vtkSmartPointer<vtkPolyData>::New();
2. vtkPoints 객체 생성 후 점 추가
double origin[3] = { 0.0, 0.0, 0.0 };
double p0[3] = { 1.0, 0.0, 0.0 };
double p1[3] = { 0.0, 1.0, 0.0 };
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(origin);
points->InsertNextPoint(p0);
points->InsertNextPoint(p1);
3. vtkLine 객체 생성 후 vtkCellArray 에 등록
vtkSmartPointer<vtkLine> line0 = vtkSmartPointer<vtkLine>::New();
line0->GetPointIds()->SetId(0, 0);
line0->GetPointIds()->SetId(1, 1);
vtkSmartPointer<vtkLine> line1 = vtkSmartPointer<vtkLine>::New();
line1->GetPointIds()->SetId(0, 0);
line1->GetPointIds()->SetId(1, 2);
vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();
lines->InsertNextCell(line0);
lines->InsertNextCell(line1);
4. 색상 지정
unsigned char red[3] = { 255, 0, 0 };
unsigned char green[3] = { 0, 255, 0 };
vtkSmartPointer<vtkUnsignedCharArray> colors = vtkSmartPointer<vtkUnsignedCharArray>::New();
colors->SetNumberOfComponents(3);
colors->InsertNextTupleValue(red);
colors->InsertNextTupleValue(green);
5. linesPolyData 에 point, line, color 지정
linesPolyData->SetPoints(points);
linesPolyData->SetLines(lines);
linesPolyData->GetCellData()->SetScalars(colors);
6. Mapper 객체 생성 후 linesPolyData 설정
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(linesPolyData);
7. Actor 객체 생성 후 mapper 등록
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(actor);
8. Renderer 객체 생성 후 actor 등록
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
9. RenderWindow 객체 생성 후 Renderer 추가
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
10. RenderWindowInteractor 객체 생성 후 RenderWindow 객체 설정
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
interactor->SetRenderWindow(renderWindow);
11. 렌더링 후 스타트
renderWindow->Render();
interactor->Start();