VTK學習之路——畫畫我的小蘋果

來源:互聯網
上載者:User

標籤:類型   示範   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學習之路——畫畫我的小蘋果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.