You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
815 B
35 lines
815 B
import {Pos} from "./Pos";
|
|
|
|
|
|
export interface Box {
|
|
x: number,
|
|
y: number,
|
|
width: number,
|
|
height: number
|
|
}
|
|
|
|
export function boundsOf(...positions: Pos[]): Box {
|
|
|
|
const allPosX = positions.map(p => p.x)
|
|
const allPosY = positions.map(p => p.y)
|
|
|
|
const x = Math.min(...allPosX)
|
|
const y = Math.min(...allPosY)
|
|
const width = Math.max(...allPosX) - x
|
|
const height = Math.max(...allPosY) - y
|
|
|
|
return {x, y, width, height}
|
|
}
|
|
|
|
export function surrounds(pos: Pos, width: number, height: number): Box {
|
|
return {
|
|
x: pos.x + (width / 2),
|
|
y: pos.y + (height / 2),
|
|
width,
|
|
height
|
|
}
|
|
}
|
|
|
|
export function contains(box: Box, pos: Pos): boolean {
|
|
return (pos.x >= box.x && pos.x <= box.x + box.width && pos.y >= box.y && pos.y <= box.y + box.height)
|
|
} |