🛰️航天仿真算法库,提供了轨道力学、姿态控制、轨迹规划等核心算法的现代C++实现。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 24 天前 | ||
| 11 天前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 18 天前 | ||
| 12 天前 | ||
| 13 天前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 7 个月前 | ||
| 19 天前 | ||
| 8 天前 | ||
| 17 天前 |
🛰️ 航天仿真算法库 SpaceAST
space-ast (/æst/) 是一个用C++编写的航天仿真算法库,为航天任务分析和设计提供计算基础。
像星辰般精准,为航天仿真而生
🌟 项目简介
space-ast (/æst/) 是一个专注于航天仿真领域的算法库,提供了轨道力学、姿态控制、轨迹规划等核心算法的现代C++实现。
如果你想要了解更多,请参考:使用指南, API文档, Github以及 Gitee 和 GitCode。
🚀 核心特性
🛰️ 算法领域
- 轨道力学:二体问题、轨道外推、兰伯特问题求解
- 姿态系统:四元数运算、姿态动力学、控制算法
- 坐标转换:J2000, MOD, TOD, ECF, LVLH等坐标系间的转换
- 环境模型:大气密度、引力场、太阳辐射压
- 数值方法:常微分方程数值积分、线性代数求解
📦 快速开始
📋 环境要求
- C++11兼容编译器 (MSVC 2015+, GCC 5+, clang)
- xmake 2.9+
🏗️ 构建项目
git clone https://github.com/space-ast/ast.git --recursive
cd ast
xmake
🏗️ 项目架构
ast/
├── data/ # 数据
├── docs/ # 文档
├── examples/ # 示例代码片段
├── include/ # 头文件
├── projects/ # 示例工程
├── repo/ # 第三方库配置文件
├── scripts/ # 工具脚本
├── src/ # 源文件
├── test/ # 测试工程
└── thirdparty/ # 第三方库
🎯 API 设计理念
- 简单易用:提供简洁的API接口,方便开发者快速集成到项目中。
- 高度可定制:允许开发者根据需求自定义算法参数和行为。
- 性能优化:针对航天仿真场景,对关键算法进行了性能优化。
📏代码规范
📝 命名规范
项目采用以下命名约定:
// 命名空间 ast
namespace ast
{
// ...
}
// 全局函数 - 单个'a'前缀
aPropagateOrbit();
aSolveLambert();
aRotateQuaternion();
// 类型别名 - 'A'前缀
typedef ast::OrbitPropagator AOrbitPropagator;
typedef ast::AttitudeController AAttitudeController;
// 枚举 - 'E'和'e'前缀
enum EFrame { eECI, eECEF };
// 常量 - 'k' 前缀
const kEps15 = 1e-15;
可以发现:在以上命名规范里,所有以小写字母开头的都有值或者地址
👁️🗨️ 注释规范
遵循Doxygen注释规范,函数、文件、类的注释采用///格式,其他多行注释也可采用/*! ... */格式。
-
函数注释:每个函数都需要包含详细的注释,包括参数说明、返回值、异常情况等。
-
类注释:每个类都需要包含详细的注释,包括功能描述、成员变量、成员函数等。
-
文件注释:每个源文件都需要包含文件头注释,包括文件名、作者、日期、版权信息等。
🤝 参与贡献
我们欢迎各种形式的贡献!无论是代码改进、文档完善、bug报告还是新功能建议,都是对项目的宝贵支持。
🔄 贡献流程
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
请确保代码遵循项目的编码规范,并添加相应的测试用例。
📄 许可证
本项目采用 Apache2.0 许可证 - 详见 LICENSE 文件。
🛠️ 开发状态
当前状态: 🟢 积极开发中
项目目前处于早期开发阶段,API可能会有较大变化。我们正在积极完善核心功能,欢迎早期使用者的反馈和建议。
🗂️ 模块规划
核心模块将认真设计与开发,并进行完善的测试与验证,确保算法的准确性和稳定性。
- 工具模块: 提供通用的工具函数,如数学运算、字符串处理等
- 数学库: 提供数值计算、线性代数、优化等数学函数
- 仿真引擎: 提供仿真环境,支持轨道模拟、姿态控制、环境交互等
- 航天算法: 提供轨道力学、姿态系统、坐标转换等核心算法
下面的模块将通过AI辅助进行开发,但会通过人工审查和自动测试确保质量。
- 脚本系统: 提供脚本接口,支持用户自定义仿真场景
- 交互式控制台: 提供交互式命令行界面,方便用户进行仿真实验
- MatLab封装: 提供MatLab接口,方便用户在MatLab环境中使用ast算法
- Python封装: 提供Python接口,方便用户在Python环境中使用ast算法
- Web Assembly封装: 提供Web Assembly接口,方便用户在浏览器中使用ast算法
- 可视化: 提供可视化工具,方便用户查看仿真结果
- 图形化界面: 提供图形化界面,方便用户进行仿真实验
📞 联系我们
- 💬 讨论区: GitHub Discussions
- 🐛 问题报告: GitHub Issues
📚 参考资料
ast项目的开发参考和使用了很多资料与工具,感谢所有开源社区贡献者的辛勤工作,以及航天仿真领域研究人员的理论贡献,这些宝贵的资源为ast项目的开发提供了坚实的基础。
💻 开源代码
- Orekit: Java语言编写的航天动力学库,提供丰富的轨道和姿态算法
- GMAT: 通用任务分析工具,NASA开源的航天任务分析软件
- Pagmo2: 欧洲空间局开发的并行全局优化库
- PyGMO2: Pagmo2的Python绑定,用于科学计算的优化工具
- PyKEP: 欧洲空间局的航天动力学Python库,专注于轨道优化
- brahe: 一个Rust航天动力学库,可用于研究和工程应用
- satkit: 一个Rust航天动力学库,实现了一些航天中的基础功能
- AstroLib: 航天/卫星建模与仿真算法库
- Eigen: 高性能C++模板库,用于线性代数、矩阵和向量运算
- Scipy: 一个Python库,用于科学计算和技术计算,提供了许多数学、科学和工程领域的功能
- GNU Octave: 开源数值计算软件,提供与MATLAB兼容的语法
- Hipparchus: 一个Java数学库,提供了丰富的数学函数和算法
- Qt: 跨平台C++图形用户界面应用程序开发框架
- Python: 流行的通用编程语言,在科学计算领域广泛应用
- julia: 一种高性能的动态编程语言,专为科学计算和数值分析而设计
- glibc: GNU C库,提供了C语言标准库的实现
- abseil: 一个C++库,提供了许多常用的功能,如字符串处理、内存管理、并发编程等,是Google开源的一个项目
🔗 项目依赖
🔧 工具链
- Xmake: 基于Lua的现代化C/C++构建工具
📦 第三方库
- iau-sofa: 一个C库,提供了许多常用的天文计算函数
- Eigen: 高性能C++模板库,用于线性代数、矩阵和向量运算
- fmt: 一个用于格式化字符串的C++库,提供了类似于Python的格式化语法
- openscenegraph: 一个跨平台的3D图形库,用于渲染和交互显示3D场景
- opengl: 一个跨平台的3D图形库,用于渲染和交互显示3D场景
- Qt: 跨平台C++图形用户界面应用程序开发框架
🌌 项目名称灵感
ast 这个名字蕴含着多重深意,每一层都呼应着航天仿真的本质:
🪐 词源深意
- 星辰之源:源自希腊语词根
aster(ἀστήρ),意为"星辰" - 天文传承:与 astronomy(天文学)、astronaut(宇航员)、Astrodynamics(航天动力学)等同源
- 宇宙探索:象征着我们通过仿真技术探索宇宙奥秘的使命
🚀 专业内涵
- Aerospace Simulation Tool - 航天仿真工具
- Advanced Space Technology - 先进空间技术
- Astrodynamics Solver Tool - 航天动力学求解工具
"在代码的宇宙中,我们绘制航天的星辰轨迹"