Skip to content

[feat/MAT-362] Catmull-Rom + frozen prefix 증분 path 빌드#304

Open
b0nsu wants to merge 1 commit intorefactor/mat-361-native-stylusfrom
refactor/mat-362-catmull-rom
Open

[feat/MAT-362] Catmull-Rom + frozen prefix 증분 path 빌드#304
b0nsu wants to merge 1 commit intorefactor/mat-361-native-stylusfrom
refactor/mat-362-catmull-rom

Conversation

@b0nsu
Copy link
Copy Markdown
Collaborator

@b0nsu b0nsu commented Apr 30, 2026

Summary

quadratic Bezier를 centripetal Catmull-Rom으로 교체하고, IncrementalPathBuilder로 frozen prefix 증분 빌드를 도입합니다.
시나리오: 200 points 획 → 전체 재계산 O(n) → 마지막 segment만 O(1).

Stacked PR 7/10 — base: refactor/mat-361-native-stylus

Linear

Changes

  • smoothing.ts — centripetal Catmull-Rom 알고리즘, IncrementalPathBuilder, centripetalControlPointsMut
  • DrawingCanvas에서 buildSmoothPath → IncrementalPathBuilder 연동
  • index.ts export 추가

Testing

  • pnpm typecheck 통과
  • pnpm lint 통과

Risk / Impact

  • 영향 범위: 필기 path smoothing 알고리즘 전면 교체
  • 확인이 필요한 부분: 시각 품질, 증분 빌드 정확성
  • 배포 시 유의사항: 없음

… prefix

- smoothing.ts: centripetal Catmull-Rom cubic Bézier로 교체
  - centripetalControlPointsMut: 4점 기반 제어점 계산 (mutable singleton, 0 alloc)
  - buildSmoothPath: cubicTo 기반 Catmull-Rom (기존 quadTo 대비 부드러운 곡선)
- [v2 개선] IncrementalPathBuilder: frozen prefix 증분 path 빌드
  - 확정된 segments를 frozenPath에 유지, 마지막 ~3 segments만 재계산
  - 시나리오: 200 points 획 → 기존 O(n) 전체 재계산 → O(1) 증분 빌드
- DrawingCanvas.tsx: addPoint에서 IncrementalPathBuilder 사용

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@linear
Copy link
Copy Markdown

linear Bot commented Apr 30, 2026

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pointer-admin Ready Ready Preview, Comment Apr 30, 2026 11:53am

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant