BaekRyang 808ddd99ec init
2025-11-04 10:15:34 +09:00

60 lines
1.3 KiB
TypeScript

/**
* 정규화된 좌표계의 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;
}