// here P can be a Point, or a number // IRectangle corresponds to Rectangle // IRectangle corresponds to Interval export interface IRectangle

{ add(point: P): void add_rect(rectangle: IRectangle

): IRectangle

contains_point(point: P): boolean contains_rect(rect: IRectangle

): boolean intersection_rect(rectangle: IRectangle

): IRectangle

intersects_rect(rectangle: IRectangle

): boolean area: number contains_point_radius(p: P, radius: number): boolean }