C语言SDL库简单界面开发(Linux)-天体运动

2023-10-11 18:59

本文主要是介绍C语言SDL库简单界面开发(Linux)-天体运动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

半路被拉过来给人调程序,通过多线程,模拟行星围绕太阳公转,时间仓促,最后简单实使用了万有引力公式,实现了一个天体围绕恒星旋转的界面。

功能说明

要求使用C 语言实现一个模拟行星围绕太阳公转的界面,进阶要求是通过多线程,加快程序在运行过程中计算所耗费的时间。

编译执行

编译:gcc *.c -o nbodygui -fsanitize=address -g -lSDL2 -lSDL2_gfx -lm -lpthread
执行:
1)./nbodygui 800 600 2000 0.1 -f planets.csv 0.0025 4

设置窗口为800 X 600,循环执行2000次,时间变化速率0.1,-f是代表从下一个参数指定的文件planets.csv中读取数据,窗口缩放比例0.0025(忽略),线程数目为4。
2)./nbodygui 800 600 2000 1 -b 10 0.0025 4
设置窗口为800 X 600,循环执行2000次,时间变化速率0.1,-b是代表自动产生数据,下一个参数表示数据的个数,窗口缩放比例0.0025(忽略),线程数目为4。

常见错误

fatal error: SDL/SDL.h: No such file or directory
原因是SDL库没有安装,根据你使用的是SDL1还是SDL2来进行不同的安装,如下所示:
SDL2:sudo apt-get install libsdl2-dev
SDL1:sudo apt-get install libsdl1.2-dev
fatal error: SDL2/SDL2_gfxPrimitives.h: No such file or directory
同样是没有库文件,下载更新即可:
SDL2:sudo install libsdl2-gfx-dev

运行效果

在这里插入图片描述

工程链接

https://github.com/Wqhong/SDL2_mutithread

这篇关于C语言SDL库简单界面开发(Linux)-天体运动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/190166

相关文章

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS