pub fn validate_triangle(p: &[[f64; 2]; 3]) -> Result<(), &'static str>
A triangle needs distinct nodes, area above tolerance, and counter-clockwise order.