UNPKG

@turbox3d/shared

Version:

turbox shared internal utility

43 lines (38 loc) 937 B
export interface Vec2 { x: number; y: number; } export interface Vec3 { x: number; y: number; z: number; } /** 判断点是否在矩形内 */ export function pointInRect(p: Vec2, rect: Vec2[]) { const [r1, r2] = rect; const c1 = (p.x - r1.x) * (p.x - r2.x); const c2 = (p.y - r1.y) * (p.y - r2.y); return c1 <= 0 && c2 <= 0; } interface ICanvasRect { width: number; height: number; x: number; y: number; } /** * 获得点击位置相对于 canvas 的坐标 * 如果输入参数不合法,或点击位置超出 canvas 的 clientRect 则返回 undefined * @param vec 事件坐标 * @param canvas 要接受的 canvas 对象 */ export function getRelativePositionFromEvent(vec: Vec2, rect: ICanvasRect) { const point = { x: vec.x - rect.x, y: vec.y - rect.y, }; if (point.x <= 0 || point.y <= 0 || point.x > rect.width || point.y > rect.height) { return undefined; } return point; }