/** * 정규화된 좌표계의 2D 포인트 (0.0 - 1.0) */ export interface Point { x: number; y: number; } /** * 애니메이션 이징 함수 타입 */ export type EasingFunction = | 'linear' | 'easeIn' | 'easeOut' | 'easeInOut' | 'easeInQuad' | 'easeOutQuad'; /** * 왜곡 애니메이션 움직임 설정 */ export interface DistortionMovement { /** 왜곡 시작 벡터 */ vectorA: Point; /** 왜곡 종료 벡터 */ vectorB: Point; /** 애니메이션 지속 시간 (초) */ duration: number; /** 적용할 이징 함수 */ easing: EasingFunction; } /** * 사각형 포인트와 애니메이션 설정을 포함하는 왜곡 영역 */ export interface DistortionArea { /** 고유 식별자 */ id: string; /** 사각형의 네 모서리 포인트 [topLeft, topRight, bottomRight, bottomLeft] */ basePoints: [Point, Point, Point, Point]; /** 움직임 애니메이션 설정 */ movement: DistortionMovement; /** 왜곡 강도 (0.0 - 1.0) */ distortionStrength: number; /** 현재 애니메이션 진행도 (0.0 - 1.0) */ progress: number; /** 현재 드래그 벡터 (progress로부터 계산됨) */ dragVector: Point; } /** * 영역 충돌 감지를 위한 경계 상자 */ export interface AreaBounds { minX: number; minY: number; maxX: number; maxY: number; }