pub mod transform;
pub use transform::*;
use crate::bbox::BBox;
pub trait Empty {
fn empty() -> Self;
fn is_empty(&self) -> bool;
}
pub trait Contains<RHS = Self> {
fn contains(&self, obj: RHS) -> bool;
}
pub trait Absorb<RHS = Self> {
type Output;
fn absorb(self, rhs: RHS) -> Self::Output;
}
pub trait Intersect<RHS = Self> {
type Output;
fn intersect(self, rhs: RHS) -> Self::Output;
fn intersects(self, rhs: RHS) -> bool;
}
pub trait Centroid<T> {
fn centroid(self) -> T;
}
pub trait Area<T> {
fn area(self) -> T;
fn signed_area(self) -> T;
}
pub trait Volume<T> {
fn volume(self) -> T;
fn signed_volume(self) -> T;
}
pub trait ShapeMatrix<M> {
fn shape_matrix(self) -> M;
}
pub trait Normal<T> {
fn normal(self) -> T;
}
pub trait BoundingBox<T> {
fn bounding_box(&self) -> BBox<T>;
}
pub trait Skew {
type Output;
fn skew(&self) -> Self::Output;
}