【小沐學GIS】基于C++繪制三維數字地球Earth(OpenGL、glfw、glut、QT)第三期

🍺三維數字地球系列相關文章如下🍺:
1【小沐學GIS】基于C++繪制三維數字地球Earth(456:OpenGL、glfw、glut)第一期
2【小沐學GIS】基于C++繪制三維數字地球Earth(456:OpenGL、glfw、glut)第二期
3【小沐學GIS】基于C++繪制三維數字地球Earth(456:OpenGL、glfw、glut)第三期
4【小沐學GIS】基于C++OpenSceneGraph(OSG)繪制三維數字地球Earth(7:OpenGL)
5【小沐學GIS】基于C++QT繪制三維數字地球Earth(8:OpenGL)
6【小沐學GIS】基于C++繪制太陽系SolarSystem(9:OpenGL、glfw、glut)
7【小沐學GIS】基于C#繪制三維數字地球Earth(10:OpenGL)
8【小沐學GIS】基于Python繪制三維數字地球Earth(11:OpenGL)
9【小沐學GIS】基于Android繪制三維數字地球Earth(12:OpenGL)
10【小沐學GIS】基于WebGL繪制三維數字地球Earth(13:OpenGL)

文章目錄

  • 1、簡介
  • 2、相關公式
  • 3、實現步驟
  • 4、運行結果(3d整體地球)
    • 4.21 opengl / glfw / glew / c++ / 白天黑夜大氣層 (3d)
    • 4.22 opengl / glfw / glew / c++ / 云層 (3d)
    • 4.23 opengl / glfw / glew / c++ / obj(3d)
    • 4.24 opengl / glfw / glad / c++ / 發光太陽和地球(3d)
    • 4.25 opengl / glfw / glew / c++ / 天空盒(3d)
    • 4.26 opengl / win32 / glew / FreeImage / c++ / 動態天空(3d)
    • 4.27 opengl / freeglut / glew / c++ / 白天夜晚(3d)
    • 4.28 opengl / freeglut / glad / c++ / 太陽地球天空盒(3d)
    • 4.29 opengl / sdl / glad / c++ / 文字/網格(3d)
    • 4.30 opengl / glfw / glad / c++ / 白天黑夜法線(3d)
  • 結語

1、簡介

在現代計算機圖形學中,OpenGL(Open Graphics Library)是一個廣泛使用的跨平臺的圖形API,它允許開發者在各種操作系統上渲染二維和三維矢量圖形。實現一個三維地球模型是OpenGL應用的一個經典案例,涉及到球體的建模、紋理映射、光照和視角控制等多個方面。

2、相關公式

在這里插入圖片描述

3、實現步驟

首先,創建一個球體模型來代表地球。定義球體的頂點和索引,使用球坐標系下的參數方程來生成球體的頂點數據。然后,為球體創建紋理,這是一張全球的地圖圖片,或者是分割成多個區域的瓦片地圖。紋理映射是將二維圖像包裹到三維模型上的過程,它使得地球模型看起來更加真實。

光照是另一個重要的環節,它能夠模擬不同光照條件下地球的明暗變化。OpenGL提供了多種光照模型,包括環境光、漫反射光和鏡面反射光等,通過合理配置這些光照參數,可以增強地球模型的立體感。

視角控制是實現用戶交互的關鍵。通過監聽鼠標事件,可以實現對地球的旋轉和平移操作,讓用戶可以從不同角度觀察地球。這通常涉及到一些矩陣變換,如旋轉矩陣和平移矩陣,它們被用來更新模型視圖矩陣,從而改變相機的位置和方向。

最后,渲染循環是OpenGL程序的核心,它不斷地清除屏幕、設置繪圖狀態、繪制地球模型,并交換前后緩沖區以更新顯示。在這個循環中,處理所有的繪圖命令,包括設置紋理、應用光照和執行繪制調用。

4、運行結果(3d整體地球)

4.21 opengl / glfw / glew / c++ / 白天黑夜大氣層 (3d)

在這里插入圖片描述
在這里插入圖片描述

4.22 opengl / glfw / glew / c++ / 云層 (3d)

在這里插入圖片描述
在這里插入圖片描述

4.23 opengl / glfw / glew / c++ / obj(3d)

在這里插入圖片描述

4.24 opengl / glfw / glad / c++ / 發光太陽和地球(3d)

在這里插入圖片描述
在這里插入圖片描述

4.25 opengl / glfw / glew / c++ / 天空盒(3d)

在這里插入圖片描述
在這里插入圖片描述

4.26 opengl / win32 / glew / FreeImage / c++ / 動態天空(3d)

在這里插入圖片描述

在這里插入圖片描述

4.27 opengl / freeglut / glew / c++ / 白天夜晚(3d)

在這里插入圖片描述
在這里插入圖片描述

4.28 opengl / freeglut / glad / c++ / 太陽地球天空盒(3d)

在這里插入圖片描述
在這里插入圖片描述

4.29 opengl / sdl / glad / c++ / 文字/網格(3d)

在這里插入圖片描述
在這里插入圖片描述

4.30 opengl / glfw / glad / c++ / 白天黑夜法線(3d)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

以上章節所有地球代碼,均在VS2017及以上、或QT5、QT6等開發環境編譯通過。工程文件基于CMake構建。

結語

如果您覺得該方法或代碼有一點點用處,可以給作者點個贊,或打賞杯咖啡;╮( ̄▽ ̄)╭
如果您感覺方法或代碼不咋地//(ㄒoㄒ)//,就在評論處留言,作者繼續改進;o_O???
如果您需要相關功能的代碼定制化開發,可以留言私信作者;(????)
感謝各位童鞋們的支持!( ′ ▽′ )ノ ( ′ ▽′)っ!!!

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

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

相關文章

實景視頻與模型疊加融合?

[視頻GIS系列]無人機視頻與與實景模型進行實時融合_無人機視頻融合-CSDN博客文章瀏覽閱讀1.5k次,點贊28次,收藏14次。將無人機視頻與實景模型進行實時融合是一個涉及多個技術領域的復雜過程,主要包括無人機視頻采集、實景模型構建、視頻與模型…

MySQL通過binlog日志進行數據恢復

記錄一次阿里云MySQL通過binlog日志進行數據回滾 問題描述由于阿里云遠程mysql沒有做安全策略 所以服務器被別人遠程攻擊把數據庫給刪除,通過查看binlog日志可以看到進行了drop操作,下面將演示通過binlog日志進行數據回滾操作。 1、查詢是否開始binlog …

IDEA 修改格式化僅格式化本次改動代碼

最近總是發現格式化的時候會格式化文件所有代碼,提交Git 后再看提交日志,就很不清晰。修改方式如下 中文: 格式化代碼快捷鍵[中文配置]: 英文: 格式化代碼快捷鍵[英文配置]:

el-table ToggleRowSelection實現取消選中沒效果(virtual-scroll)

場景: 就是在虛擬列表el-table選中之后 點擊查詢 默認之前選中的 現象: 就是實現選中, 但是無法去除勾選等等 問題發現: 看定位的數據 有多個一樣的,我想著勾選之前 先去掉勾選 ,但是沒效果或者說“相同的…

【含開題報告+文檔+PPT+源碼】基于微信小程序的點餐系統的設計與實現

開題報告 隨著互聯網技術的日益成熟和消費者生活水平與需求層次的顯著提升,外賣點餐平臺在中國市場上迅速興起并深深植根于民眾日常生活的各個角落。這類平臺的核心在于構建了一個基于互聯網的強大訂餐服務系統,它無縫整合了餐飲商戶資源與廣大消費者的…

解決 MyBatis 中空字符串與數字比較引發的條件判斷錯誤

問題復現 假設你在 MyBatis 的 XML 配置中使用了如下代碼&#xff1a; <if test"isCollect ! null"><choose><when test"isCollect 1">AND exists(select 1 from file_table imgfile2 where task.IMAGE_SEQimgfile2.IMAGE_SEQ and im…

SpringBoot 手動實現動態切換數據源 DynamicSource (中)

大家好&#xff0c;我是此林。 SpringBoot 手動實現動態切換數據源 DynamicSource &#xff08;上&#xff09;-CSDN博客 在上一篇博客中&#xff0c;我帶大家手動實現了一個簡易版的數據源切換實現&#xff0c;方便大家理解數據源切換的原理。今天我們來介紹一個開源的數據源…

ASCII碼簡介以及在php中的使用

什么是 ASCII&#xff1f; ASCII&#xff08;American Standard Code for Information Interchange&#xff0c;美國信息交換標準代碼&#xff09;是一種字符編碼標準&#xff0c;用于在計算機、通信設備及其他設備中表示文字、符號和控制信息。它最早于 1963 年由美國國家標準…

前端學習一

一 進程與線程 線程是進程執行的最小單位&#xff0c;進程是系統分配任務的最小單位。 一個進程可執行最少一個線程。線程分為子線程和主線程。 主線程關閉則子線程關閉。 二 瀏覽器進程 瀏覽器是多進程多線程應用。 進程包括&#xff1a; 瀏覽器進程 負責程序交互渲染…

Go vendor

博主在編寫Go代碼時&#xff0c;遇到了這樣一個問題&#xff1a;想要修改某個外部包&#xff0c;添加幾個函數&#xff0c;而其余功能繼續使用&#xff0c;經過調研&#xff0c;發現可以將Go的外部包源碼復制到項目本地&#xff0c;對包的代碼進行修改&#xff0c;從而達到目的…

EasyExcel 動態設置表格的背景顏色和排列

項目中使用EasyExcel把數據以excel格式導出&#xff0c;其中設置某一行、某一列單元格的背景顏色、排列方式十分常用&#xff0c;記錄下來方便以后查閱。 1. 導入maven依賴&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easy…

概率論得學習和整理23:EXCEL 數據透視表基礎操作

目錄 1 選擇數據&#xff0c;插入數據透視表 2 選擇數據透視表生成位置 3 出現了數據透視表的面板 4 數據透視表的基本結構認識 4.1 交叉表/列聯表 4.2 row, column, cell 一個新增的篩選器&#xff0c;就這么簡單 4.3 可以只添加 rowcell/值 &#xff0c;也可以colu…

計算機網絡從誕生之初到至今的發展歷程

前言 "上網"&#xff0c;相信大家對這個動詞已經不再陌生&#xff0c;網 通常指的是網絡&#xff1b;在 2024 年的今天&#xff0c;網絡已經滲透到了每個人的生活中&#xff0c;成為其不可或缺的一部分&#xff1b;你此時此刻在看到我的博客&#xff0c;就是通過網絡…

C# 讀取EXCEL的數據批量插入單個PDF里的多個位置

C# 讀取EXCEL的數據批量插入單個PDF里的多個位置 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; usin…

圖論筆記1

1.1鄰接矩陣儲存法 //創建:二維數組vector<vector<int>> graph(n,vector<int>(n,0));//儲存for(int i0;i<m;i){int x1,x2;cin>>x1>>x2;graph[x1-1][x2-1]1;}1.2鄰接表儲存法 補充&#xff1a;c中的list是鏈表 鏈接 //創建&#xff1a;數組…

GB28181系列三:GB28181流媒體服務器ZLMediaKit

我的音視頻/流媒體開源項目(github) GB28181系列目錄 目錄 一、ZLMediaKit介紹 二、 ZLMediaKit安裝、運行(Ubuntu) 1、安裝 2、運行 3、配置 三、ZLMediaKit使用 一、ZLMediaKit介紹 ZLMediaKit是一個基于C11的高性能運營級流媒體服務框架&#xff0c;項目地址&#xf…

iPhone恢復技巧:如何從 iPhone 恢復丟失的照片

在計算機時代&#xff0c;我們依靠手機來捕捉和存儲珍貴的回憶。但是&#xff0c;如果您不小心刪除或丟失了手機上的照片怎么辦&#xff1f;這真的很令人沮喪和煩惱&#xff0c;不是嗎&#xff1f;好吧&#xff0c;如果您在 iPhone 上丟失了照片&#xff0c;您不必擔心&#xf…

如何將你的 Ruby 應用程序從 OpenSearch 遷移到 Elasticsearch

作者&#xff1a;來自 Elastic Fernando Briano 將 Ruby 代碼庫從 OpenSearch 客戶端遷移到 Elasticsearch 客戶端的指南。 OpenSearch Ruby 客戶端是從 7.x 版 Elasticsearch Ruby 客戶端分叉而來的&#xff0c;因此代碼庫相對相似。這意味著當將 Ruby 代碼庫從 OpenSearch 遷…

LeetCode 283.移動零(超簡單講解)

283.移動零 題目示例示例1示例2 解題思路快慢指針實現設計 詳細代碼 題目 給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操作。 示例 示例1 …

Day8 神經網絡中的導數基礎

Day8 神經網絡中的導數基礎 導數的定義 導數&#xff08;Derivative&#xff09;是微積分中的一個核心概念&#xff0c;用于描述函數在某一點的變化率。簡單來說&#xff0c;導數就是函數值隨自變量微小變化而產生的變化量&#xff0c;即斜率或變化率。假設有一個函數 f ( x…