日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vtk基本数据结构

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vtk基本数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2020-06-10

數據對象被組織成一種結構并且被賦予相應的屬性值時就形成數據集(Dataset)。VTK里數據集對應的類是vtkDataSet,該類從vtkDataObject直接派生。vtkDataSet由兩個部分組成,即組織結構(Organizing Structure)以及與組織結構相關聯的屬性數據(Attribute Data)。
vtkDataSet的組織結構由拓撲結構(Topology)和幾何結構(Geometry)兩部分組成。拓撲結構描述了物體的構成形式,幾何結構描述了物體的空間位置關系。換言之,點數據(Point Data)所定義的一系列坐標點構成了vtkDataSet(數據集)的幾何結構;點數據的連接(點的連接先形成單元數據(Cell Data),由單元數據再形成拓撲)就形成了數據集的拓撲結構。比如,我們想要在屏幕上顯示一個三角形,首先我們必須定義三角形三個點的坐標(即Point Data,記三個點為P1, P2和P3),然后將這三個點按照一定的順序連接起來(P1-P2-P3,或者是P3-P2-P1的順序),這三個點定義了數據集的幾何結構,它們的連接就構成了數據集的拓撲結構。亦即,點數據(Point Data)定義數據集的幾何結構,單元數據(Cell Data)定義數據集的拓撲結構,要形成完整的數據集,必須有幾何和拓撲兩種結構。屬性數據是對拓撲結構和幾何結構信息的補充,屬性數據可以是某個空間點的溫度值,也可以是某個單元的質量之類的。屬性數據包括點屬性和單元屬性。可以為vtkPolyData的點數據和單元數據分別指定屬性數據。
1.

這里我們只定義了幾何結構,即只有點的坐標 #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h>int main(){vtkSmartPointer<vtkPoints> pts =vtkSmartPointer<vtkPoints>::New();pts->InsertNextPoint(0.0, 0.0, 0.0);pts->InsertNextPoint(1.0, 0.0, 0.0);pts->InsertNextPoint(1.0, 1.0, 0.0);pts->InsertNextPoint(0.0, 1.0, 0.0);pts->InsertNextPoint(2.0, 0.0, 0.0);vtkSmartPointer<vtkPolyData> polyData =vtkSmartPointer<vtkPolyData>::New();polyData->SetPoints(pts);vtkSmartPointer<vtkPolyDataMapper> mapper =vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputData(polyData);vtkSmartPointer<vtkActor> actor =vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);vtkSmartPointer<vtkRenderer> render =vtkSmartPointer<vtkRenderer>::New();render->AddActor(actor);render->SetBackground(0.0, 0.0, 0.0);vtkSmartPointer<vtkRenderWindow> rw =vtkSmartPointer<vtkRenderWindow>::New();rw->AddRenderer(render);rw->SetSize(320, 240);vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();rwi->SetRenderWindow(rw);rwi->Render();rwi->Start();return 0;}

結果

2

點數據(Point Data)定義數據集的幾何結構,單元數據(Cell Data)定義數據集的拓撲結構 vtkCellArray類型的對象vertices就是用來指定數據集polydata的拓撲結構, 而polydata的幾何結構則是由points來定義的。 #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkProperty.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h>int main(){vtkSmartPointer<vtkPoints> pts =vtkSmartPointer<vtkPoints>::New();pts->InsertNextPoint(0.0, 0.0, 0.0);pts->InsertNextPoint(1.0, 0.0, 0.0);pts->InsertNextPoint(1.0, 1.0, 0.0);pts->InsertNextPoint(0.0, 1.0, 0.0);pts->InsertNextPoint(2.0, 0.0, 0.0);vtkSmartPointer<vtkCellArray> vertices = vtkSmartPointer<vtkCellArray>::New();for (int i = 0; i < 5; i++) {vtkIdType pt[1] = { i };vertices->InsertNextCell(1, pt);}vtkSmartPointer<vtkPolyData> polyData=vtkSmartPointer<vtkPolyData>::New();polyData->SetPoints(pts);polyData->SetVerts(vertices);vtkSmartPointer<vtkPolyDataMapper> mapper =vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputData(polyData);vtkSmartPointer<vtkActor> actor =vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetPointSize(5);vtkSmartPointer<vtkRenderer> render =vtkSmartPointer<vtkRenderer>::New();render->AddActor(actor);render->SetBackground(0.0, 0.0, 0.0);vtkSmartPointer<vtkRenderWindow> rw =vtkSmartPointer<vtkRenderWindow>::New();rw->AddRenderer(render);rw->SetSize(320, 240);vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();rwi->SetRenderWindow(rw);rwi->Render();rwi->Start();return 0;}

結果

如果什么也沒有顯示可以用鼠標滾輪進行縮放一下

3

將零維的點拓撲結構改成一維的線拓撲結構 #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkLine.h> #include <vtkPolyData.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkProperty.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h>int main(){vtkSmartPointer<vtkPoints> pts =vtkSmartPointer<vtkPoints>::New();pts->InsertNextPoint(1.0, 0.0, 0.0);pts->InsertNextPoint(0.0, 0.0, 1.0);pts->InsertNextPoint(0.0, 0.0, 0.0);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<vtkLine> line2 = vtkSmartPointer<vtkLine>::New();line2->GetPointIds()->SetId(0, 1);line2->GetPointIds()->SetId(1, 2);vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();lines->InsertNextCell(line0);lines->InsertNextCell(line1);lines->InsertNextCell(line2);vtkSmartPointer<vtkPolyData> polyData=vtkSmartPointer<vtkPolyData>::New();polyData->SetPoints(pts);polyData->SetLines(lines);vtkSmartPointer<vtkPolyDataMapper> mapper =vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputData(polyData);vtkSmartPointer<vtkActor> actor =vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);vtkSmartPointer<vtkRenderer> render =vtkSmartPointer<vtkRenderer>::New();render->AddActor(actor);render->SetBackground(0.0, 0.0, 0.0);vtkSmartPointer<vtkRenderWindow> rw =vtkSmartPointer<vtkRenderWindow>::New();rw->AddRenderer(render);rw->SetSize(320, 240);vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();rwi->SetRenderWindow(rw);rwi->Render();rwi->Start();return 0;}

結果

如果什么也沒有顯示可以用鼠標滾輪進行縮放一下 新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的vtk基本数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。