fix(study): 약한 pressure 에서도 stroke 폭 보장 — MIN_PRESSURE floor + thinning 완화

사용자 보고: 쓰다보면 필압이 줄어드는데 그러면 "학" 의 ㅡ 같은 부분이 거의 안
보이고 점선처럼 됨. 사용감 별로.

원인: thinning 0.4 + Pencil pressure 0.2~0.3 (약한 누름) → stroke 폭이 너무 줄어듦.

Fix:
- normalizePressure 에 MIN_PRESSURE 0.4 floor. pressure 0.05~0.4 도 0.4 로 고정.
  dynamic range 0.4~1.0. 약한 pressure 에서도 stroke 가 충분히 보임.
- thinning 0.4 → 0.28. 폭 변동 줄임. floor 와 조합 시 ±17% 정도 변동.

기존 폭 시작점은 유지 (만년필 nib 변화 명확).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-27 15:19:18 +09:00
parent eb35943c58
commit 30d32ad90c
@@ -214,10 +214,10 @@
if (!path) {
const outline = getStroke(pts, {
size,
// thinning 0.4 — pressure 변동에 stroke 폭 ±40% 반응. 만년필 nib 처럼 약한
// 압력 = 가는 선, 강한 압력 = 굵은 선. PRESSURE_WINDOW 8 의 적당한 평균이
// 마디 차단 + 명확한 굵기 변화 균형.
thinning: 0.4,
// thinning 0.28 — pressure 변동에 stroke 폭 ±28% 반응. MIN_PRESSURE 0.4
// floor 와 조합하면 약한 pressure 에서도 stroke 가 충분히 보이고, 강한
// pressure 에선 만년필 nib 같은 굵기 차이.
thinning: 0.28,
// smoothing 0.99 — 점 간 보간 사실상 최대.
smoothing: 0.99,
// streamline 0.86 — input lazy 강하게. 손떨림 보정 + 부드러움. 0.9 이상은 lag.
@@ -330,9 +330,14 @@
return e.pointerType === 'pen' || e.pointerType === 'mouse';
}
// 약한 pressure 에서도 stroke 가 너무 가늘어져 *점선* 처럼 보이지 않도록 floor.
// 사용자 보고: 쓰다보면 pressure 가 줄어 "학" 의 ㅡ 같은 부분이 거의 안 보임.
// 0.4 floor + thinning 0.28 = pressure 변동 폭 ±17% 정도, 만년필 변화 명확하면서
// 너무 가늘어지지 않음.
const MIN_PRESSURE = 0.4;
function normalizePressure(p: number | undefined): number {
if (typeof p !== 'number' || !Number.isFinite(p) || p <= 0.05) return 0.5;
return Math.min(1, p);
if (typeof p !== 'number' || !Number.isFinite(p)) return 0.5;
return Math.max(MIN_PRESSURE, Math.min(1, p));
}
// 점 사이 거리가 너무 멀면 중간 점 보간 — 빠른 stroke 의 sparse point 점선 방지.