【小沐学GIS】基于C++绘制三维太阳系SolarSystem(OpenGL、glfw、glut)

news2024/10/1 15:12:23
🍺三维数字地球系列相关文章如下🍺:
1【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第一期
2【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第二期
3【小沐学GIS】基于OpenSceneGraph(OSG)绘制三维数字地球Earth
4【小沐学GIS】基于C++绘制太阳系SolarSystem(OpenGL、glfw、glut)
5【小沐学GIS】基于C#绘制三维数字地球Earth(OpenGL)

文章目录

  • 1、简介
    • 1.1 太阳系概述
    • 1.2 电磁频谱
    • 1.3 球体坐标计算
  • 9、代码测试
    • 9.1 opengl / glfw / glew / stb / c++ / 太阳系(3d)
    • 9.2 opengl / glut / glew / lodepng / c++ / 太阳系(3d)
    • 9.3 opengl / glfw / glad / imgui / freetype / c++ / 太阳系(3d)
    • 9.4 opengl / glut / tga / c++ / 太阳系(3d)
    • 9.5 opengl / glfw / glad / glm / stb / c++ / 太阳系(3d)
    • 9.6 opengl / glut / tga / c++ / 太阳系(3d)
    • 9.7 opengl / glfw / glad / glm / stb / freetype / c++ / 太阳系(3d)
  • 结语

1、简介

1.1 太阳系概述

太阳系有一颗恒星、八颗行星、五颗官方认可的矮行星、至少 290 颗卫星、超过 130 万颗小行星和大约 3,900 颗彗星。
在这里插入图片描述

它位于银河系的外旋臂中,称为猎户座臂或猎户座支线。我们的太阳系以大约515,000英里/小时(828,000公里/小时)的速度绕银河系中心运行。大约需要2.3亿年才能完成围绕银河系中心的一个轨道。

我们称它为太阳系,因为它由我们的恒星、太阳和所有被引力束缚的东西组成——水星、金星、地球、火星、木星、土星、天王星和海王星;矮行星冥王星、谷神星、马克马克、豪米亚和厄里斯——以及数百颗卫星;以及数以百万计的小行星、彗星和流星体。
在这里插入图片描述
我们的太阳系是我们所知道的唯一一个拥有支持生命的行星的太阳系。到目前为止,我们只知道地球上的生命,但我们正在寻找其他星球上的生命。

在这里插入图片描述

1.2 电磁频谱

电磁能由带电粒子的振动产生,以波的形式穿过大气层和太空真空。这些波具有不同的波长(从波峰到波峰的距离)和频率;波长越短意味着频率越高。有些波长更长,如无线电波、微波和红外波,而另一些波长更短,如紫外线、X 射线和伽马射线。可见光位于长波到短波辐射范围的中间。这一小部分能量是人眼能够检测到的全部。电磁波谱图如下图。
在这里插入图片描述

1.3 球体坐标计算

std::vector<float> sphereVertices;
std::vector<int> sphereIndices;

/*计算球体顶点*/
//(1)生成组成球的顶点Vertices
for (int y=0;y<=Y_SEGMENTS;y++)
{
	for (int x=0;x<=X_SEGMENTS;x++)
	{
		float xSegment = (float)x / (float)X_SEGMENTS;
		float ySegment = (float)y / (float)Y_SEGMENTS;
		float xPos = std::cos(xSegment * 2.0f * PI) * std::sin(ySegment * PI);
		float yPos = std::cos(ySegment * PI);
		float zPos = std::sin(xSegment * 2.0f * PI) * std::sin(ySegment * PI);
		sphereVertices.push_back(xPos);
		sphereVertices.push_back(yPos);
		sphereVertices.push_back(zPos);
	}
}

//(2)生成组成球的三角形面片的顶点序号Indices
for (int i=0;i<Y_SEGMENTS;i++)
{
	for (int j=0;j<X_SEGMENTS;j++)
	{
		sphereIndices.push_back(i * (X_SEGMENTS + 1) + j);
		sphereIndices.push_back((i + 1) * (X_SEGMENTS + 1) + j);
		sphereIndices.push_back((i + 1) * (X_SEGMENTS + 1) + j+1);
		sphereIndices.push_back(i* (X_SEGMENTS + 1) + j);
		sphereIndices.push_back((i + 1) * (X_SEGMENTS + 1) + j + 1);
		sphereIndices.push_back(i * (X_SEGMENTS + 1) + j + 1);
	}
}

9、代码测试

9.1 opengl / glfw / glew / stb / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

9.2 opengl / glut / glew / lodepng / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

9.3 opengl / glfw / glad / imgui / freetype / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

9.4 opengl / glut / tga / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

9.5 opengl / glfw / glad / glm / stb / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

9.6 opengl / glut / tga / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

9.7 opengl / glfw / glad / glm / stb / freetype / c++ / 太阳系(3d)

在这里插入图片描述
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习基础之数据操作

深度学习中最常用的数据是张量&#xff0c;对张量进行操作是进行深度学习的基础。以下是对张量进行的一些操作&#xff1a; 首先我们需要先导入相关的张量库torch。 元素构造&#xff08;初始化&#xff09; 使用arange创造一个行向量&#xff0c;也就是0轴&#xff08;0维&a…

LabVIEW 2023下载安装教程,附安装包和工具,免费使用,无套路获取

前言 LabVIEW是一种程序开发环境&#xff0c;提供一种图形化编程方法&#xff0c;可可视化应用程序的各个方面&#xff0c;包括硬件配置、测量数据和调试&#xff0c;同时可以通过FPGA数学和分析选板中的NI浮点库链接访问浮点运算功能库&#xff0c;LabVIEW软件是NI设计平台的…

西圣H1头戴式耳机发布,不止音质惊艳,更有舒适听音体验

近日&#xff0c;深耕智能声学领域多年的 xisem西圣品牌‏‏发布——‏西圣H1头戴式主动降噪蓝牙耳机正式迎来首销。从各个方面来看&#xff0c;这款头戴式耳机展现出了极具颠覆性的创新&#xff0c;不仅在音质和降噪性能上表现出色&#xff0c;更重要的是采用了更加轻巧的佩戴…

使用记事本修复DBC文件问题V3.0

要麻了&#xff0c;竟然写到3.0了。 有个信号解析不出来&#xff0c;同一条报文的其他信号可以正确解析&#xff0c;打开DBC检查&#xff0c;位置长度都是正确的&#xff0c;死活解析不出来。 打开记事本 发现他居然在信号后面加了个回车&#xff0c;就产生了上面这种诡异的情…

js实现九九乘法表

效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script type"text/javascript">// 输出乘法口诀表// document.write () 空格 " " 换行…

微电网优化MATLAB:火鹰优化算法(Fire Hawk Optimizer,FHO)求解微电网优化(提供MATLAB代码)

一、火鹰优化算法FHO 火鹰优化算法&#xff08;Fire Hawk Optimizer&#xff0c;FHO&#xff09;由Mahdi Azizi等人于2022年提出&#xff0c;该算法性能高效&#xff0c;思路新颖。 单目标优化&#xff1a;火鹰优化算法&#xff08;Fire Hawk Optimizer&#xff0c;FHO&#…

QKCP容器平台安装qkcp paas deployment

22年底23年初做的容器云平台的项目&#xff0c;该份是当初实施部署真实生产环境的手册&#xff0c;关键ip和端口已经更改&#xff0c;现贴来给大伙参阅。 x公司qkcp容器平台安装部署手册 目录 x公司qkcp容器平台安装部署手册 1 集群基础环境 3 1.1. 集群规划信息 3 1.2. 标准…

Eclipses安装教程

一、下载开发工具包 1、开发工具包JDK 下载地址链接&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ 下载教程&#xff1a; 1&#xff09;点击链接&#xff0c;可以跳转到页面 2&#xff09;下滑页面&#xff0c;找到开发工具包 3&#xff09; 记住下载之…

数据库管理Navicat Premium 15

Navicat Premium 15是一款强大的数据库管理和开发工具&#xff0c;支持多种数据库类型&#xff0c;包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。它提供了数据可视化、高效的操作、数据同步与备份等功能&#xff0c;以及用户友好的界面。Navicat Premium 15…

【数据库原理】(37)Web与数据库

随着网络的高速发展和网络服务的日趋完善&#xff0c;网络上的信息量呈几何级数增长。为了有效地组织、存储、管理和使用网上的信息&#xff0c;数据库技术被广泛地应用于网络领域。特别是在Internet上&#xff0c;已建立了数以万计的网站&#xff0c;其中大中型网站的后台大多…

2.4 网络层01

2.4 网络层01 2.4.1 网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 异构网络内部的计算机要想实现通信是不需要实现网络互联的&#xff0c;异构网络之间要想实现通信就必须实现网络互连。 路由器工作在五层协议体系结构的网络…

Android:JNI实战,加载三方库、编译C/C++

一.概述 Android Jni机制让开发者可以在Java端调用到C/C&#xff0c;也是Android应用开发需要掌握的一项重要的基础技能。 计划分两篇博文讲述Jni实战开发。 本篇主要从项目架构上剖析一个Android App如何通过Jni机制加载三方库和C/C文件。 二.Native C Android Studio可…

python一元线性回归sklearn

# -*- coding: utf-8 -*-from sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt# 载入数据 data np.genfromtxt(一元线性回归.csv, delimiter,) x_data data[:,0] y_data data[:,1] plt.scatter(x_data,y_data) plt.show(…

如何本地安装Python Flask并结合内网穿透实现远程开发

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

03--数据库连接池

1、数据库连接池 1.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时&#xff0c;传统的模式基本是按以下步骤&#xff1a; 在主程序&#xff08;如servlet、beans&#xff09;中建立数据库连接进行sql操作断开数据库连接 这种模式开发&#xff0c;存在的问题:…

外贸自建站如何建立?海洋建站的操作指南?

外贸自建站的建站流程什么&#xff1f;做跨境怎么搭建外贸网站&#xff1f; 外贸自建站成为企业开拓国际市场、提升品牌形象的重要途径。然而&#xff0c;对于许多企业而言&#xff0c;如何高效地进行外贸自建站仍然是一个挑战。海洋建站将带您一步步探讨外贸自建站的关键步骤…

Ubuntu重设root的密码

重设root的密码 未重设密码之前&#xff0c;Ubuntu 中默认的 root 密码是随机的&#xff0c;即每次开机都会有一个新的root 密码&#xff0c;所以此时的 root 用户密码并不确定&#xff1b; 重设root 密码&#xff0c;使用安装时创建的用户登录后sudo su切换至root用户&#…

JAVASE进阶(设计模式、设计原则)(更新中...)

目录 一、注解 内置注解&#xff1a;JAVA中已经定义好的注解。 元注解&#xff1a;修饰注解的注解。 自定义注解。 二、克隆 JAVA中对clone的实现&#xff1f; 浅克隆 深克隆 那么该如何做到深克隆呢&#xff1f; 三、常用设计模式 1、创建型模式 单例模式 工厂模式 工…

【数据结构与算法】之字符串系列-20240122

这里写目录标题 一、383. 赎金信二、387. 字符串中的第一个唯一字符三、389. 找不同四、392. 判断子序列五、409. 最长回文串 一、383. 赎金信 简单 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果…

【EI会议征稿通知】第五届电气、电子信息与通信工程国际学术会议 (EEICE 2024)

第五届电气、电子信息与通信工程国际学术会议 (EEICE 2024&#xff09; 2024 5th International Conference on Electrical, Electronic Information and Communication Engineering (EEICE 2024) 第五届电气、电子信息与通信工程国际学术会议 (EEICE 2024&#xff09;将于20…