cosmo/QUICKSTART.md

201 lines
4.2 KiB
Markdown
Raw Normal View History

# Cosmo - 深空探测器可视化系统 🚀
基于 NASA JPL Horizons 数据的深空探测器 3D 可视化系统。
## 快速开始
### 前置要求
- Python 3.11+
- Node.js 20+
- Yarn
### 1. 启动后端 API
```bash
cd backend
# 创建虚拟环境并安装依赖
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# 启动服务器
python -m app.main
```
后端将运行在 http://localhost:8000
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
### 2. 启动前端应用
```bash
cd frontend
# 安装依赖
yarn install --ignore-engines
# 启动开发服务器
yarn dev
```
前端将运行在 http://localhost:5173
## 项目结构
```
cosmo/
├── backend/ # Python FastAPI 后端
│ ├── app/
│ │ ├── main.py # FastAPI 入口
│ │ ├── api/ # API 路由
│ │ ├── models/ # 数据模型
│ │ └── services/ # 业务逻辑
│ └── requirements.txt
├── frontend/ # React + Three.js 前端
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── hooks/ # 自定义 hooks
│ │ ├── types/ # TypeScript 类型
│ │ └── utils/ # 工具函数
│ └── package.json
├── PROJECT.md # 详细技术方案
├── IMPLEMENTATION_PLAN.md # 实施计划
└── README.md # 本文件
```
## 功能特性
### 已实现 ✅
- **后端 API**
- 从 NASA JPL Horizons 获取实时天体数据
- 支持时间范围查询
- 数据缓存机制每3天更新
- RESTful API 设计
- **前端 3D 可视化**
- React + Three.js 3D 场景
- 实时显示太阳系天体位置
- 交互式相机控制(旋转、平移、缩放)
- 星空背景
- 响应式设计
- **支持的天体**
- 探测器: Voyager 1 & 2, New Horizons, Parker Solar Probe, Juno, Cassini, Perseverance
- 行星: 太阳系八大行星
### 规划中 🚧
- 轨道线绘制
- 时间选择器
- 点击聚焦功能
- 信息面板
- 真实纹理贴图
- 3D 探测器模型
- 动态缩放优化
## 技术栈
### 后端
- FastAPI - 现代 Python Web 框架
- astroquery - NASA JPL Horizons 数据查询
- astropy - 天文计算
- Pydantic - 数据验证
### 前端
- React 18 + TypeScript
- Vite - 快速构建工具
- Three.js - 3D 渲染
- @react-three/fiber - React Three.js 集成
- @react-three/drei - Three.js 辅助工具
- Tailwind CSS - 样式框架
- Axios - HTTP 客户端
## API 端点
### 获取天体位置
```
GET /api/celestial/positions
```
查询参数:
- `start_time`: 起始时间 (ISO 8601)
- `end_time`: 结束时间 (ISO 8601)
- `step`: 时间步长 (如 "1d", "12h")
### 获取天体信息
```
GET /api/celestial/info/{body_id}
```
### 列出所有天体
```
GET /api/celestial/list
```
## 使用说明
### 控制方式
- **左键拖动**: 旋转视角
- **右键拖动**: 平移视角
- **滚轮**: 缩放
### 坐标系统
使用日心坐标系Heliocentric以太阳为原点单位为 AU (天文单位)。
## 外部资源需求
### 3D 模型(未来)
- 来源: https://nasa3d.arc.nasa.gov/models
- 格式: GLB/GLTF
- 存放: `frontend/public/models/`
### 行星纹理(未来)
- 来源: https://www.solarsystemscope.com/textures/
- 格式: JPG/PNG
- 存放: `frontend/public/textures/`
## 开发进度
详见 [IMPLEMENTATION_PLAN.md](./IMPLEMENTATION_PLAN.md)
- ✅ Stage 1: 后端基础框架和数据获取
- ✅ Stage 2: 前端基础框架和简单 3D 场景
- ✅ Stage 3: 集成真实数据(部分完成)
- 🚧 Stage 4: 进阶交互和信息面板
- 🚧 Stage 5: 视觉优化和模型加载
## 故障排除
### 后端无法启动
- 确保 Python 3.11+ 已安装
- 检查虚拟环境是否激活
- 尝试升级 pip: `pip install --upgrade pip`
### 前端依赖安装失败
- 使用 `yarn install --ignore-engines`
- 确保 Node.js 版本 >= 20
### 数据加载缓慢
- NASA JPL Horizons API 首次查询较慢10-30秒
- 后续请求会使用缓存,速度更快
## 许可证
MIT
## 致谢
- NASA JPL Horizons System
- React Three Fiber 社区
- Astroquery 项目
---
更多技术细节请查看 [PROJECT.md](./PROJECT.md)