P4-04 · @saier/core:airbrush(时间累积流量)
- Phase / ID: P4 / P4-04
- Depends on: P4-01、P4-02
- Files:
packages/core/src/brush/presets/airbrush.ts、src/brush/AirbrushEngine.ts、test/ - Effort: M
- Status: 🟡
Context
airbrush 的特征是停驻也持续喷:指针不动,浓度随时间累积。这要一个时间驱动的 dab 发射,而不是只在 pointermove 时产 dab。时间源可注入(确定性,见 Testing,不用 Date.now())。
Steps
AirbrushEngine(或给SimpleBrushEngine加时间钩子):除按 spacing 产 dab 外,停驻时按flow × dt在当前点持续喷软 dab。- 时间源注入:
tick(now)由上游(rAF / 测试时钟)驱动;引擎据dt累积。 - 软边 + 低单 dab opacity + 高叠加 → 喷枪渐变。
- 确定性:固定时间序列 + 固定输入 → 固定像素。
Acceptance
- [ ] 停驻累积:指针不动、时间推进,覆盖处浓度随时间上升(断言)。
- [ ] 移动时呈喷枪渐变软边(golden)。
- [ ] 注入时钟下确定性可复现(同 tick 序列 → 同像素)。
Out of scope
- 真实颜料/水分模型(→ P7)。