//! Tipos geométricos mínimos en `f32`. #[derive(Debug, Clone, Copy, PartialEq)] pub struct Point { pub x: f32, pub y: f32, } impl Point { pub const fn new(x: f32, y: f32) -> Self { Self { x, y } } } #[derive(Debug, Clone, Copy, PartialEq)] pub struct Rect { pub x: f32, pub y: f32, pub w: f32, pub h: f32, } impl Rect { pub const fn new(x: f32, y: f32, w: f32, h: f32) -> Self { Self { x, y, w, h } } pub fn right(&self) -> f32 { self.x + self.w } pub fn bottom(&self) -> f32 { self.y + self.h } pub fn contains(&self, p: Point) -> bool { p.x >= self.x && p.x <= self.right() && p.y >= self.y && p.y <= self.bottom() } }