pub trait Surface: Geometry {
// Required method
fn outer_boundary_points(&self) -> Vec<&DirectPosition>;
// Provided methods
fn outer_boundary_lower_corner(&self) -> DirectPosition { ... }
fn normal(&self) -> Vector3<f64> { ... }
fn plane_equation(&self) -> Plane { ... }
}