Skip to content

About

3D astronomy visualization of sun, moon, planets, stars and milkey way in space and sky views. 3D 天文可视化,在太空视角和天空视角下观察太阳、月亮、行星和恒星和银河

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

Earth Motion

天文可视化单页应用,在浏览器中观察太阳、月亮、行星、恒星和天球网格的运行规律。

功能

Space View(空间视角)

  • 以"观测者"或"天球"两种参考系展示太阳系天体和恒星
  • 支持赤道网格、黄道、至日/分点标记
  • 中西星官星图切换(中国星官 / 西方星座)
  • 三垣二十八宿文化探索:四象分组、星官检索、来源说明与中西星名对照
  • 在地面/空间视角中圈选已核实的代表星;切换中西星图可比较同一颗星的命名
  • 展示行星位置、太阳周年视运动轨迹

Earth View(地面视角)

  • 站在地面观察天空半球
  • 太阳周日运动,随时间变化
  • 赤纬圈、时圈网格
  • 可调节观测纬度、经度,并提供常用城市预设

观测设置

  • 使用 UTC 日期时间输入、“现在”按钮和前后 1 小时 / 1 天步进控制仿真时间
  • 通过经纬度或城市预设切换观测位置

操作

  • 鼠标拖拽旋转视角(Space View 使用 OrbitControls)
  • 控制面板切换模式、时间、观测位置、播放速度和显示选项
  • 在“星空体系”下展开“三垣二十八宿”,选择或搜索条目;上一项/下一项可连续阅读,关闭或“清除高亮”可退出圈选

文化导览的范围

本版收录三垣、二十八宿及北斗/织女/河鼓共 34 个导览条目。三垣、5 宿和3个星官提供已核实的代表星示例,其他宿保留分组和来源,并明确标记尚未接入代表星。金色圆环是示例恒星,不是星区边界或完整成员表;没有补画未经核实的线段。

星官是传统命名的星群,宿也可指相关天区,不能与现代 IAU 的 88 个有边界星座简单一一对应。页面使用现代常用星名对应和项目已有的 J2000 坐标,不声称复原某一朝代的完整星图。资料来源与已知边界见 文化导览说明。

技术栈

  • Vite 6 + React 18 + TypeScript 5
  • Three.js / @react-three/fiber / @react-three/drei
  • Zustand(状态管理)、Tailwind CSS(样式)
  • astronomy-engine(天文计算)

开始

npm install
npm run dev

项目结构

src/
├── App.tsx                          # Canvas 入口
├── components/
│   ├── scene/
│   │   ├── SpaceView.tsx            # 空间视角场景
│   │   ├── EarthView.tsx            # 地面视角场景
│   │   ├── builders/                # 场景数据构建
│   │   └── layers/                  # 参考系图层
│   └── ui/
│       └── ControlPanel.tsx         # 控制面板
├── store/
│   └── useAppStore.ts               # 状态管理
└── utils/
    ├── astronomy.ts                 # 基础坐标转换
    ├── ephemeris.ts                 # 天体位置计算
    ├── stars.ts                     # 星表数据
    ├── starField.ts                 # 星点渲染
    ├── skyProjection.ts             # 天球投影
    └── sunPaths.ts                  # 太阳路径

数值与渲染约定

  • 天体、恒星与天球网格统一使用地心 J2000 赤道坐标;地平投影包含岁差、章动和视恒星时,支持南北极与天顶。当前为几何天空演示,未加入站心视差或大气折射。
  • 稳定天空通过整体旋转更新,月相由 shader 绘制;暂停后按需刷新,仍可拖动视角和修改观测设置。
  • 太阳、月亮、行星与周日轨迹使用同一帧的精确仿真时间;所有倍速采用相同的位置、显隐、光照与采样规则,不按速度降低刷新或画质。关闭图层后停止相应绘制与求解,重新开启使用当前坐标。
  • 1周/秒 保留真实的时间倍率和东升西落。在地平参考系,它相当于每真实秒约七个昼夜;60fps 的相邻位置仍可相隔约42°。天球参考系中太阳沿周年路径移动、地平叠加层旋转,两者的原有含义不变。实现与验证见 逐帧天体修复。

验证

npm run test
npm run check
npm run lint
npm run build

自动回归覆盖投影、坐标历元、时钟和城市更新;交互与视觉效果还需在浏览器中检查。

性能对照可运行(基线提交须在当前 Git 历史中):

node scripts/benchmark-performance.mjs --baseline=ed5b07398ba73302335cd0bee094367bbbb90d28

该脚本交替测量基线/当前 CPU 热点并校验数值输出,不代表浏览器 FPS、GPU 耗时或首屏加载速度。优化不减少恒星、采样点、线段、字体或纹理分辨率。

部署与图形兼容性

  • 构建会生成 build-info.json,只包含经校验的 Git commit SHA、功能版本和部署环境,可核对域名实际上线的版本,不导出其他环境变量
  • 3D 场景需要 WebGL 2;如果图形初始化失败,页面显示局部提示与手动重试,保留控制面板和文化导览。该提示不代表 3D 渲染已经通过验证

About

3D astronomy visualization of sun, moon, planets, stars and milkey way in space and sky views. 3D 天文可视化,在太空视角和天空视角下观察太阳、月亮、行星和恒星和银河

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages