(2)VTK C++開發示例 --- 繪制多面錐體

文章目錄

    • 1. 概述
    • 2. CMake鏈接VTK
    • 3. main.cpp文件
    • 4. 演示效果


更多精彩內容
👉內容導航 👈
👉VTK開發 👈

1. 概述

VTK C++開發示例程序;
使用C++ 和VTK繪制一個多面錐體。

環境說明
系統ubuntu22.04、windows11
cmake3.22、3.25
Qt5.14.2
編譯器g++11.4、msvc2017
VTK9.4.1

2. CMake鏈接VTK

cmake_minimum_required(VERSION 3.20 FATAL_ERROR) # 設置CMake最低版本, 如果版本低于3.20, 則報錯project(vtk1) # 設置工程名
# 設置C++標準
set(CMAKE_CXX_STANDARD 14)# 設置MSVC編譯器使用UTF-8編碼
if(MSVC)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
endif()
# 輸出路徑
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
set(VTK_DIR "E:/lib/VTK/lib/cmake/vtk-9.4") # 設置VTK的路徑
# 查找VTK
find_package(VTK COMPONENTS    CommonColor  CommonCore   FiltersSources InteractionStyle RenderingContextOpenGL2 RenderingCoreRenderingFreeType RenderingOpenGL2 
)if (NOT VTK_FOUND) # 如果VTK沒有找到message(FATAL_ERROR "VTK 沒找到") # 報錯return()
endif()add_executable(vtk1 main.cpp) # 添加可執行文件target_link_libraries(vtk1 PRIVATE ${VTK_LIBRARIES}) # 鏈接VTK庫
# 設置VTK模塊自動初始化
vtk_module_autoinit(TARGETS vtk1MODULES ${VTK_LIBRARIES}
)

3. main.cpp文件

#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkConeSource.h>#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2); // 這個宏用于初始化渲染器
VTK_MODULE_INIT(vtkInteractionStyle); // 這個宏用于初始化交互樣式int main(int, char*[])
{// 創建圓錐體數據源auto coneSource = vtkSmartPointer<vtkConeSource>::New(); coneSource->SetHeight(3.0); // 設置圓錐體的高度coneSource->SetRadius(1.5); // 設置圓錐體的半徑coneSource->SetResolution(6); // 設置圓錐體的分辨率,即圓錐體的面數// 創建映射器和演員auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(coneSource->GetOutputPort()); // 設置輸入數據auto actor = vtkSmartPointer<vtkActor>::New(); // 創建演員對象,并將其與映射器關聯起來。actor->SetMapper(mapper);// 創建渲染器和窗口auto renderer = vtkSmartPointer<vtkRenderer>::New();  // 創建渲染器auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); // 創建渲染窗口renderWindow->SetWindowName("VTK最簡單示例"); // 設置渲染窗口的標題renderWindow->AddRenderer(renderer); // 將渲染器添加到渲染窗口renderWindow->SetSize(800, 600); // 設置渲染窗口的大小// 設置交互器auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();interactor->SetRenderWindow(renderWindow);// 添加演員到場景renderer->AddActor(actor);renderer->SetBackground(0.2, 0.3, 0.4);  // 設置背景顏色// 啟動渲染循環renderWindow->Render(); // 渲染窗口interactor->Start(); // 啟動交互器,進入事件循環。等待用戶進行操作(例如旋轉、縮放等)return EXIT_SUCCESS;
}

4. 演示效果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76931.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

公司內部自建知識共享的方式分類、詳細步驟及表格總結,分為開源(對外公開)和閉源(僅限內部),以及公共(全員可訪問)和內部(特定團隊/項目組)四個維度

以下是公司內部自建知識共享的方式分類、詳細步驟及表格總結&#xff0c;分為開源&#xff08;對外公開&#xff09;和閉源&#xff08;僅限內部&#xff09;&#xff0c;以及公共&#xff08;全員可訪問&#xff09;和內部&#xff08;特定團隊/項目組&#xff09;四個維度&am…

DeepSeek使用001:Word中配置DeepSeek AI的V3和R1模型

文章目錄 Word中配置DeepSeek大模型1、勾選開發工具2、信任中心設置3、添加DeepSeek-V3模型4、獲取API KEY5、添加DeepSeek-R1模型6、新建組7、測試使用 Word中配置DeepSeek大模型 1、勾選開發工具 打開【選項】 選擇【自定義功能區】 2、信任中心設置 打開【信任中心】&…

Spark-SQL核心編程語言

利用IDEA開發spark-SQL 創建spark-SQL測試代碼 自定義函數UDF 自定義聚合函數UDAF 強類型的 Dataset 和弱類型的 DataFrame 都提供了相關的聚合函數&#xff0c; 如 count()&#xff0c; countDistinct()&#xff0c;avg()&#xff0c;max()&#xff0c;min()。除此之外&…

從圖像“看出動作”

&#x1f4d8; 第一部分&#xff1a;運動估計&#xff08;Motion Estimation&#xff09; &#x1f9e0; 什么是運動估計&#xff1f; 簡單說&#xff1a; &#x1f449; 給你一段視頻&#xff0c;計算機要“看懂”里面什么東西動了、往哪動了、有多快。 比如&#xff1a; 一…

Spring Boot 使用 SMB 協議

2025/4/14 向全棧工程師邁進&#xff01; 一、詳述SMB協議 SMB&#xff08;Server Message Block&#xff09;協議是一個網絡文件共享協議&#xff0c;它使得計算機可以在網絡中共享文件、打印機以及其他資源。SMB 主要用于 Windows 操作系統&#xff0c;但也有其他平臺&#…

Spring編程式事務(本地事務)

使用 TransactionTemplate等類和 API 手動管理事務&#xff0c;控制事務的新建、提交、回滾等過程 方式一&#xff1a;使用 TransactionTemplate&#xff08;推薦方式&#xff09; Service public class OrderService {private final TransactionTemplate transactionTemplat…

itext7 html2pdf 將html文本轉為pdf

1、將html轉為pdf需求分析 經常會看到爬蟲有這樣的需求&#xff0c;將某一個網站上的數據&#xff0c;獲取到了以后&#xff0c;進行分析&#xff0c;然后將需要的數據進行存儲&#xff0c;也有將html轉為pdf進行存儲&#xff0c;作為原始存檔&#xff0c;當然這里看具體的需求…

企業級低代碼平臺的架構范式轉型研究

在快速迭代的數字時代&#xff0c;低代碼平臺如同一股清流&#xff0c;悄然成為開發者們的新寵。 它利用直觀易用的拖拽式界面和豐富的預制組件&#xff0c;將應用程序的開發過程簡化到了前所未有的程度。通過封裝復雜的編程邏輯和提供強大的集成能力&#xff0c;低代碼平臺讓…

C++ | STL之list詳解:雙向鏈表的靈活操作與高效實踐

引言 std::list 是C STL中基于雙向鏈表實現的順序容器&#xff0c;擅長高效插入和刪除操作&#xff0c;尤其適用于頻繁修改中間元素的場景。與std::vector不同&#xff0c;std::list的內存非連續&#xff0c;但提供了穩定的迭代器和靈活的元素管理。本文將全面解析std::list的…

AI運算服務器工控機特點與應用

AI運算服務器工控機是專門針對工業環境設計的計算設備&#xff0c;結合了傳統工控機&#xff08;工業控制計算機&#xff09;的可靠性與AI服務器的強大算力&#xff0c;廣泛應用于智能制造、邊緣計算、機器視覺、自動化控制等領域。以下是其核心特點、應用場景及選型建議&#…

25/4/9 算法筆記 DBGAN+強化學習+遷移學習實現青光眼圖像去模糊1

整體實驗介紹 實驗主要是結合DBGAN對抗網絡強化學習增強遷移學習增強實現青光眼圖像去模糊。今天則是先完成了DBGAN板塊模型的訓練。 實驗背景介紹 青光眼的主要特征有&#xff1a; 視盤形態與杯盤比CDR&#xff1a;青光眼患者主要表現為視杯擴大&#xff0c;盤沿變窄。 視…

智能復盤自動化系統搭建指南—基于DeepSeek API與Apple日歷的整合實踐

一、系統架構設計 本方案通過iOS快捷指令實現日歷數據與AI分析的自動化交互&#xff0c;核心流程包含&#xff1a; 日歷事件管理 創建每日循環的"AI復盤"日歷事項實現當日備注信息的動態更新 數據處理模塊時間日志標準化處理多維度數據特征提取 AI交互層對接DeepSeek…

01 位運算

12days 章節結構 00 算法前導課-編程基礎&#xff08;自學的視頻&#xff09; 01 位運算的奇巧淫技 02 查找與排序&#xff08;上&#xff09; 03 數組、查找與排序(下) 04 多維數組與矩陣 05 字符串專題 06 基本數學問題 06 遞歸、DFS、剪枝、回溯等問題 07 貪心策…

HDFS Full Block Report超限導致性能下降的原因分析

文章目錄 前言發現問題失敗的為什么是FBR塊匯報頻率的變化為什么FBR會反復失敗HDFS性能下降導致Yarn負載變高的形式化分析理解線程理解IO Wait理解HDFS性能下降導致Yarn負載和使用率增高 引用 前言 我們的Yarn Cluster主要用來運行一批由Airflow定時調度的Spark Job&#xff0…

【Kubernetes基礎--Pod深入理解】--查閱筆記2

深入理解Pod 為什么要有個Pod1. 容器協作與資源共享2. 簡化調度和資源管理3. 設計模式支持 Pod 基本用法Pod 容器共享 VolumePod 的配置管理ConfigMap 概述創建 ConfigMap 資源對象在 Pod 中使用 ConfigMap使用 ConfigMap 的限制條件 為什么要有個Pod Pod 的引入并非技術冗余&…

Margin和Padding在WPF和CSS中的不同

CSS和WPF中 margin 與 padding 在方向上的規定基本一致&#xff0c;但在使用場景和一些細節上有所不同。 CSS - 方向規定&#xff1a; margin 和 padding 屬性可以分別指定上、右、下、左四個方向的值。例如 margin:10px 20px 30px 40px; 表示上外邊距為10px、右外邊距為20…

gravity`(控制 View 內部內容的對齊方式)

文章目錄 **1. 常用取值****示例** **2. layout_gravity&#xff08;控制 View 在父容器中的對齊方式&#xff09;****常用取值****示例** **3. gravity vs layout_gravity 對比****4. 注意事項****5. 總結** 作用對象&#xff1a;當前 View 的內部內容&#xff08;如 TextView…

Go:使用共享變量實現并發

競態 在串行程序中&#xff0c;步驟執行順序由程序邏輯決定&#xff1b;而在有多個 goroutine 的并發程序中&#xff0c;不同 goroutine 的事件先后順序不確定&#xff0c;若無法確定兩個事件先后&#xff0c;它們就是并發的。若一個函數在并發調用時能正確工作&#xff0c;稱…

Vue3 SSR Serverless架構革命:彈性計算與量子加速

一、全維度Serverless SSR架構 1.1 蜂巢式彈性調度系統 1.2 冷啟動時間優化表 優化策略Node.js冷啟(ms)Deno冷啟(ms)Bun冷啟(ms)裸啟動1800960420預編譯二進制650380210內存快照預熱22016090WASM實例池15011075量子狀態預載453832 二、邊緣渲染協議升級 2.1 流式SSR響應協議…

FPAG IP核調用小練習

一、調用步驟 1、打開Quartus 右上角搜索ROM&#xff0c;如圖所示 2、點擊后會彈出如圖所示 其中文件路徑需要選擇你自己的 3、點擊OK彈出如圖所示 圖中紅色改為12與1024 4、然后一直點NEXT&#xff0c;直到下圖 這里要選擇后綴為 .mif的文件 5、用C語言生成 .mif文件 //…