likeRunner/QUICK_START.md
pythagodzilla 07cb1304d2 init
2026-03-19 17:57:03 +08:00

173 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 快速开始指南
## 项目已准备好!
新项目位置:`/Users/pythagodzilla/Projects/Kotlin/refactored-likeRunner/`
## 文件清单
### 📌 必读文档3份
1. **README.md** - 项目完整说明
2. **DATA_FLOW_GUIDE.md** - 数据流快速参考(**最重要**
3. **BEFORE_AFTER.md** - 改进前后对比
### 📌 项目代码9个文件
**数据模型层**
- `model/Coordinate.kt` - 4种坐标类型
- `model/MotionState.kt` - 2种状态类型
**核心模拟层**
- `core/TrajectorySimulator.kt` - 主协调器(**从这里开始理解**
- `core/physics/RunnerPhysics.kt` - 物理计算
- `core/trajectory/PathInterpolator.kt` - 路径插值Haversine完全保留
**噪声处理层**
- `noise/NoiseProcessor.kt` - 噪声协调器
- `noise/GpsNoiseEngine.kt` - GPS噪声 + 预留其他引擎
**程序入口**
- `Main.kt` - 使用示例
**数据资源**
- `resources/data/SampleRoute.kt` - 样本轨迹
## 5分钟快速理解
### 问题1程序是干什么的
✅ 模拟真实的跑步轨迹,包含:
- 物理计算(距离、速度、加速度)
- 路径插值(根据距离找坐标)
- GPS噪声模拟白噪声 + 漂移)
### 问题2怎么用
✅ 看 `Main.kt` 就行:
```kotlin
val simulator = TrajectorySimulator(sampleRoute)
for (time in 0.0..duration step 0.1) {
val motionState = simulator.simulate(time)
println(motionState)
}
```
### 问题3数据流是什么
✅ 4步简单流程
```
时间 → [物理] → 距离 → [路径] → 坐标 → [噪声] → 最终坐标 → [组装] → 输出
```
详见 `DATA_FLOW_GUIDE.md`
### 问题4我想加新功能怎么办
✅ 取决于是什么功能:
- 改物理:改 `RunnerPhysics.kt`
- 加噪声:改 `GpsNoiseEngine.kt`
- 改坐标:改 `Coordinate.kt`
- 改路径:改 `PathInterpolator.kt`(只改命名,算法完全保留)
详见 `DATA_FLOW_GUIDE.md` 的"在哪里插入新功能"
### 问题5原有代码呢
✅ 完全保留在 `/Users/pythagodzilla/Projects/Kotlin/likeRunner/`
新项目不会影响原项目。
## 文件阅读顺序
**第一次接触项目(推荐)**
```
1. 本文件QUICK_START.md ← 你在这里
2. README.md ← 了解项目概况
3. Main.kt ← 看代码怎么用
4. DATA_FLOW_GUIDE.md ← 深入理解数据流
5. core/TrajectorySimulator.kt ← 看主协调器
```
**要修改代码时**
```
1. DATA_FLOW_GUIDE.md ← 找到目标步骤
2. 对应的代码文件 ← 修改代码
3. BEFORE_AFTER.md ← 参考改进示例
```
**要添加新功能时**
```
1. DATA_FLOW_GUIDE.md ← "在哪里插入新功能"部分
2. GpsNoiseEngine.kt ← 参考预留位置的代码
3. 创建新文件或修改现有文件
```
## 核心概念速查
### 4步数据流
```
步骤1 [物理] : time → PhysicsState
步骤2 [路径] : distance → RawCoordinate
步骤3 [噪声] : RawCoordinate → NoisyCoordinate
步骤4 [组装] : 所有 → MotionState
```
### 关键类
```
TrajectorySimulator ← 主协调器管理4步
RunnerPhysics ← 步骤1
PathInterpolator ← 步骤2
NoiseProcessor ← 步骤3
GpsNoiseEngine ← 步骤3的实现
```
### 关键方法
```
TrajectorySimulator.simulate(time) ← 主入口
RunnerPhysics.calculate(time) ← 物理计算
PathInterpolator.interpolate(distance) ← 路径查询
NoiseProcessor.applyNoise(...) ← 添加噪声
```
## 代码规范
**保留原样**
- Haversine算法逻辑
- GPS噪声模型逻辑
- 所有数学计算
**改进**
- 方法命名(`haversine``calculateHaversineDistance`
- 类名规范(`PathLinearize``PathInterpolator`
- 数据类型清晰(每步都有明确的输出类型)
- 充分注释(伪代码、说明、预留标记)
**新增**
- NoiseProcessor 协调器
- 中间数据类型RawCoordinate, PhysicsState等
- 详细注释和文档
## 常见问题
**Q: Haversine算法被改了吗**
A: 没有。只改了方法名(`haversine``calculateHaversineDistance`),逻辑完全一样。
**Q: GPS噪声算法被改了吗**
A: 没有。白噪声和漂移的计算逻辑完全保留返回值改为Triple以包含噪声大小。
**Q: 我能直接跑这个代码吗?**
A: 大部分可以Main.kt展示了完整流程但物理计算部分还需要实现已标记TODO
**Q: 怎么才能在项目中看到数据流?**
A: 打开 `core/TrajectorySimulator.kt``simulate()` 方法就是完整的4步流程。
**Q: 预留位置在哪里?**
A: 在 `GpsNoiseEngine.kt``NoiseProcessor.kt` 中,都用注释清晰标记了。
**Q: 能同时运行原项目和新项目吗?**
A: 可以,它们完全独立。新项目在 `refactored-likeRunner/` 文件夹里。
## 下一步
- [ ] 阅读 README.md 了解完整项目
- [ ] 在 Main.kt 中看程序怎么用
- [ ] 阅读 DATA_FLOW_GUIDE.md 深入理解数据流
- [ ] 根据需要修改或添加功能
祝你使用愉快!有问题随时查看相关文档。