8000 GitHub - sdcb/n-body: Simulate N-Body in C# · GitHub
[go: up one dir, main page]

Skip to content
sdcbPublic

About

Simulate N-Body in C#

Resources

Stars

51 stars

Watchers

0 watching

Forks

Repository files navigation

N·Body — 引力的交响 QQ

中文 | English

一个基于 Direct3D 11 计算着色器、HDR 泛光和毛玻璃界面的 Windows 实时 3D 引力模拟器。

星系碰撞

蝴蝶 I 太阳系
蝴蝶效应 原行星盘

特性

  • 7 个类别,共 35 个场景
    • 星系:星系碰撞、银河系 × 仙女座星系、自引力旋涡星系。最多 65k 个粒子,在 GPU 上以 O(N²) 直接求和计算(分块 HLSL 计算着色器 + 蛙跳积分)。暗物质晕与动力学摩擦让星系能够真正合并。
    • 三体周期解:8 字形解、Šuvakov–Dmitrašinović 族(蝴蝶、飞蛾、蜻蜓、阴阳、大黄蜂、毛线团……)、Broucke、Hénon、拉格朗日解。
    • 编舞与星环:4、6、12 体刚性旋转环,以及小卫星环。
    • 行星系统:基于 JPL J2000 轨道根数的真实太阳系(G = 4π²,单位为 AU、年)、内太阳系,以及环双星的“塔图因”系统。
    • 星团与盘:Plummer 球状星团、冷坍缩、带有行星开辟空隙的原行星盘。
    • 混沌:蝴蝶效应(两个初始条件仅相差 10⁻⁹ 的毕达哥拉斯三体系统)以及毕达哥拉斯三体问题本身。
    • 沙盒:Shift + 拖动发射新天体;碰撞的天体会合并。
  • 物理核心(Sdcb.NBody,平台无关,兼容 AOT):结构数组(SoA)布局,SIMD 加并行的引力求和,Plummer 软化,以及四种积分器(Leapfrog、Yoshida 4、RK4、自适应 Dormand–Prince 5(4))。实时跟踪能量、动量和角动量,HUD 中带有能量漂移曲线。
  • 视觉:程序化生成的星空与星云、HDR 渲染、基于物理的泛光、ACES 色调映射、渐隐的 GPU 轨迹、带日冕和衍射星芒的恒星、带大气层的受光行星、带多普勒增亮吸积盘的黑洞。
  • 体验:启动后进入电影式演示模式(自动镜头、场景轮播);运行时可切换的中英双语界面;程序化合成的环境配乐(无音频资源文件);F12 截图;按 GPU 自动选择画质档位。
  • 工程:原生 Win32 窗口,不依赖 WinForms;Native AOT 单文件 exe(约 3 MB);xUnit 测试;GitHub Actions 持续集成与发布。

操作

输入 功能
左键拖动 旋转视角
右键或中键拖动 平移
滚轮 缩放
双击天体 跟随
Space 暂停
← → 上一个 / 下一个场景
↑ ↓ 加速 / 减速
G 场景画廊
I 切换积分器
T 轨迹开关
R 重置
F 自动取景
Tab 隐藏界面
L 中文 / English
M 静音
F11 全屏
F12 截图(保存到“图片\N-Body”)
H 帮助
Esc 退出

构建

环境要求:Windows 10 及以上、.NET 10 SDK,以及支持 D3D11(特性级别 11.0)的显卡。

dotnet run --project Sdcb.NBody.App                 # 运行(全屏)
dotnet run --project Sdcb.NBody.App -- --windowed   # 窗口模式运行
dotnet test Sdcb.NBody.Tests                        # 单元测试
dotnet publish Sdcb.NBody.App -c Release -r win-x64 # Native AOT 单文件 exe

命令行参数:

--windowed                以窗口模式启动
--scenario <id>           直接进入指定场景(如 galaxy-collision、figure-8)
--capture <file.png>      在 --capture-at 秒后渲染为 PNG,然后退出
--check-shaders           编译所有着色器并报告错误

设置环境变量 NBODY_QUALITY 为 ultra、high、medium 或 low 可覆盖自动画质档位。

项目结构

Sdcb.NBody/          物理核心:BodySet、ForceModel、积分器、Simulation、Scenarios/
Sdcb.NBody.App/      渲染器:Win32 窗口、D3D11 设备、HLSL 着色器、HUD、音频
Sdcb.NBody.Tests/    xUnit 测试:守恒律、周期轨道回归、场景合理性检查

微信群

如果微信群二维码过期了,请加入 QQ 群 .NET骚操作 495782587。

许可证

MIT

About

Simulate N-Body in C#

Resources

Stars

51 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0