topfans/docs/superpowers/specs/2026-05-22-lenticular-gyro-optimization-design.md

83 lines
2.1 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.

# 光栅卡陀螺仪交互优化设计方案
**日期:** 2026-05-22
**文件:** `docs/superpowers/specs/2026-05-22-lenticular-gyro-optimization-design.md`
---
## 1. 问题描述
设备使用陀螺仪倾斜查看光栅卡时,图片在左右视图之间快速来回切换,无法稳定在某一侧。
**期望行为:**
- 设备居中(不倾斜)→ 显示中性图
- 往左倾斜 → 稳定显示左视图
- 往右倾斜 → 稳定显示右视图
**当前行为:**
- 轻微倾斜就触发切换,且图片在左右之间来回振荡
- 没有平衡点让图片稳定
---
## 2. 根本原因
**原因缺少中性阈值区Dead Zone**
陀螺仪数据直接映射到图片切换阈值,没有任何"容忍区"。
当设备略微偏离中心时:
- `gamma` 值微小的正负变化
- 直接导致 `x` 方向变化
- 触发 opacity 切换
加上陀螺仪本身的噪声和设备轻微晃动,导致图片不断在左右之间来回切换。
---
## 3. 修复方案
**文件:** `frontend/composables/useHolographicPreview.js`
### 修改:增大中性阈值区
当前代码已有 dead zone 判断逻辑,只需增大 `db` 系数即可:
```javascript
// 第79行
const db = 0.08 * dead // 从 0.016 改为 0.08
```
**说明:** 增大 db 系数 = 中性区变宽 = 更难触发切换 = 图片更稳定
---
## 4. 参数调整
| 参数 | 当前值 | 修改后 | 说明 |
|------|--------|--------|------|
| db (dead zone) | 0.016 | 0.08 | 中性区阈值,越大越难触发切换 |
**建议值范围:** 0.05 ~ 0.12
- 值越大:中性区越宽,越稳定但响应越慢
- 值越小:越敏感,但容易误触发
---
## 5. 验收标准
| 测试场景 | 期望结果 |
|---------|---------|
| 设备静止居中 | 显示中性图,稳定不动 |
| 轻微倾斜 | 保持中性,不触发切换 |
| 明显往左倾斜 | 显示左视图,稳定 |
| 明显往右倾斜 | 显示右视图,稳定 |
| 从倾斜缓慢回到居中 | 平滑过渡,无振荡 |
---
## 6. 影响范围
- 修改文件:`frontend/composables/useHolographicPreview.js`
- 不影响触摸滑动交互
- 不涉及后端或数据库