S, T — smooth continuation
S / T는 path d를 짧게 쓰기 위한 문법 설탕입니다. 수학적으로는 008 C / 009 Q와 같은 곡선 family이고, 이전 control을 anchor 기준 반사해 G¹(접선 연속)을 맞춥니다.
데모 path
M 60 300 C 120 60 200 360 260 120 S 420 40 580 300
mountPathCommandDemo — readout에 segment 리스트와 pathDFromSegments rebuild가 출력됩니다. S 줄은 파서가 이미 **explicit C**로 전개한 뒤 보여 줍니다.
S — smooth cubic
… C cp2_prev, anchor
S cp2_new, end
→ cp1_auto = 2·anchor − cp2_prev
import { reflectControlForSmoothContinuation } from "svg-matrix-core";
const cp1 = reflectControlForSmoothContinuation(anchor, previousCp2);
// { x: 2*anchor.x - previousCp2.x, y: ... }
parsePathD 내부 (index.js):
// upper === "S"
const reflected = lastCubicControl
? { x: 2 * current.x - lastCubicControl.x, y: 2 * current.y - lastCubicControl.y }
: { ...current };
segments.push({ type: "C", from: current, cp1: reflected, cp2, to });
이전 segment가 C가 아니면 lastCubicControl 없음 → cp1 = current(kink 가능).
T — smooth quadratic
… Q cp_prev, anchor
T cp_new, end (또는 relative t)
T도 동일 반사 — lastQuadraticControl 사용. 016 flatten 데모 path … Q … T …에서 두 번째 곡선이 T로 이어짐.
G¹ 직관
| 보장 | |
|---|---|
| G⁰ | 위치 연속 (같은 anchor) |
| G¹ | 접선 방향 연속 |
| G² | ✗ (곡률 연속 아님) |
필기·프리드로우·Illustrator pencil stroke가 S/T를 씁니다.
편집기
- 사용자는 anchor만 드래그 → 반사 cp1이 따라감 (072 데모)
- 저장:
S/T유지 vspathDFromSegments로 전부C/Q— 제품 선택 - 024 editor는 explicit segment graph
Core API
reflectControlForSmoothContinuation—geometry.jsparsePathD— S/T → C/Q 전개
관련
오늘의 핵심
S/T는 다른 곡선이 아니라 반사 규칙 + 축약 문법입니다. 파서·편집기·072가 같은 한 줄 수식을 공유해야 kink가 없습니다.