標籤:類型 示範 ext camera vtk array 實體 ini 任務
資料集主要由描寫敘述資料集幾何形狀的點集資料及構成資料集的單元構成,因此構建資料集的主要任務就是確定點集和構建單元,本示範範例程式構建了一個蘋果的實體,然後繪製蘋果。示範範例程式啟動並執行過程例如以下:
1、首先確定蘋果外輪廓的控制點。形成點集。
2、構建一個線單元。
3、構建多邊形資料。把這些點集串連起來繪製一條線。
4、採用壓制過濾器旋轉輪廓線,構成蘋果的表面實體。
5、繪製蘋果
示範範例程式的代碼例如以下:
#include "stdafx.h"#include <vtkPoints.h>#include <vtkSmartPointer.h>#include <vtkCellArray.h>#include <vtkPolyData.h>#include <vtkPolyDataMapper.h>#include <vtkRotationalExtrusionFilter.h>#include <vtkActor.h>#include <vtkProperty.h>#include <vtkRenderer.h>#include <vtkRenderWindow.h>#include <vtkRenderWindowInteractor.h>int _tmain(int argc, _TCHAR* argv[]){ //定義蘋果輪廓線的點座標 vtkSmartPointer<vtkPoints>pPoints=vtkPoints::New(); pPoints->InsertPoint(0,0.0,0.0,1.5); pPoints->InsertPoint(1,1.0,0.0,1); pPoints->InsertPoint(2,2.0,0.0,1.5); pPoints->InsertPoint(3,3.0,0.0,2.5); pPoints->InsertPoint(4,3.5,0.0,3.0); pPoints->InsertPoint(5,4.0,0.0,5.0); pPoints->InsertPoint(6,3.5,0.0,6.0); pPoints->InsertPoint(7,2.0,0.0,7.0); pPoints->InsertPoint(8,1.0,0.0,6.0); pPoints->InsertPoint(9,0.0,0.0,5.0); //構建線單元。繪製輪廓線 vtkSmartPointer<vtkCellArray>pLineCell=vtkCellArray::New(); //構建一個單元,由10個點構成 pLineCell->InsertNextCell(10); //構成單元點集的索引號 pLineCell->InsertCellPoint(0); pLineCell->InsertCellPoint(1); pLineCell->InsertCellPoint(2); pLineCell->InsertCellPoint(3); pLineCell->InsertCellPoint(4); pLineCell->InsertCellPoint(5); pLineCell->InsertCellPoint(6); pLineCell->InsertCellPoint(7); pLineCell->InsertCellPoint(8); pLineCell->InsertCellPoint(9); //定義多邊形資料集 vtkSmartPointer<vtkPolyData>pPolyData=vtkPolyData::New(); //設定構成多邊形的幾何資料 pPolyData->SetPoints(pPoints); //設定單元類型,線單元 pPolyData->SetLines(pLineCell); //壓制輪廓線,形成蘋果實體 vtkSmartPointer<vtkRotationalExtrusionFilter>pExtruFilter=vtkRotationalExtrusionFilter::New(); pExtruFilter->SetInput(pPolyData); //設定產生蘋果表面的光滑度參數,蘋果的表面由多少個面構成 pExtruFilter->SetResolution(10); //將資料對應到圖形系統進行繪製 vtkSmartPointer<vtkPolyDataMapper>pMap=vtkPolyDataMapper::New(); pMap->SetInput(pExtruFilter->GetOutput()); vtkSmartPointer<vtkActor>pActor=vtkActor::New(); pActor->SetMapper(pMap); pActor->GetProperty()->SetColor(0.0,1.0,0.0); //繪製 vtkSmartPointer<vtkRenderer>pRen=vtkRenderer::New(); pRen->AddActor(pActor); //建立繪製視窗 vtkSmartPointer<vtkRenderWindow>pRenWin=vtkRenderWindow::New(); pRenWin->AddRenderer(pRen); //建立互動器 vtkSmartPointer<vtkRenderWindowInteractor>pIren=vtkRenderWindowInteractor::New(); pIren->SetRenderWindow(pRenWin); //設定背景顏色 pRen->SetBackground(1,1,1); //設定視窗尺寸 pRenWin->SetSize(300,300); pRenWin->Render(); pRen->ResetCamera(); //開始繪製 pIren->Initialize(); pIren->Start(); return 0;}
結果的幾個角度
VTK學習之路——畫畫我的小蘋果