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:
@@ -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 점선 방지.
|
||||
|
||||
Reference in New Issue
Block a user