60 lines
1.3 KiB
TypeScript
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;
|
|
} |