feat(study): 만년필 굵기 변화 — thinning 0.4 + window 8

마디 해결 후 사용자 피드백: 굵기 변동이 거의 없음. 만년필 느낌 (pressure 따른 명확한
굵기 차이) 원함.

원인: thinning 0.22 + window 16 = 변동 흡수 너무 강함. Pencil pressure 0.3~0.8
변동 → window 평균 거의 일정 + 22% 폭 반응 → 시각적으로 미세.

Fix:
- PRESSURE_WINDOW 16 → 8. pressure 변화 빠르게 따라옴 (마디는 보간 점 16px 으로
  이미 차단됨).
- thinning 0.22 → 0.4. stroke 폭 ±40% 반응. 만년필 nib 처럼 약한 압력 = 가는,
  강한 압력 = 굵은. 명확한 차이.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-27 15:16:13 +09:00
parent 7114081f86
commit eb35943c58
@@ -214,10 +214,10 @@
if (!path) {
const outline = getStroke(pts, {
size,
// thinning 0.22 — pressure 변동에 stroke 폭 ±22% 반응. moving-window 평균
// pressure 와 조합 → 큰 흐름의 굵기 변화는 명확하지만 점 간 micro 변동 없음
// (마디 안 발생). Notability 비슷한 자연스러운 변화.
thinning: 0.22,
// thinning 0.4 — pressure 변동에 stroke 폭 ±40% 반응. 만년필 nib 처럼 약한
// 압력 = 가는 선, 강한 압력 = 굵은 선. PRESSURE_WINDOW 8 의 적당한 평균이
// 마디 차단 + 명확한 굵기 변화 균형.
thinning: 0.4,
// smoothing 0.99 — 점 간 보간 사실상 최대.
smoothing: 0.99,
// streamline 0.86 — input lazy 강하게. 손떨림 보정 + 부드러움. 0.9 이상은 lag.
@@ -345,7 +345,7 @@
// 살짝 변동시켜 thinning 적용 시 *점 간 micro 폭 변동 = 마디* 일으키던 회귀를
// 차단. window 평균은 큰 흐름만 반영, 매 점 변동은 1/N 수준. 사용자 보고 "선
// 사이사이 애매한 끊어짐" 의 원인이었음.
const PRESSURE_WINDOW = 16;
const PRESSURE_WINDOW = 8;
function smoothPressureWindow(pts: Point[], current: number): number {
let sum = current;
let count = 1;