objex 0.2.0

object entity creation and persistence using matcat and geospec
Documentation
use crate::core::Object;
use geospec::{Dimensions, Volume, SurfaceArea};

#[derive(Debug)]
pub struct MassProps {
    pub mass: f64,
    pub density: f32,
    pub volume: f64,
    pub surface_area: f64,
    pub surface_to_volume: f64,
}

pub fn derive_mass<T: Dimensions + Volume + SurfaceArea>(obj: &Object<T>) -> MassProps {
    let volume = obj.volume();
    let surface_area = obj.surface_area();
    let density = obj.material.density;
    let mass = density as f64 * volume;

    MassProps {
        mass,
        density,
        volume,
        surface_area,
        surface_to_volume: surface_area / volume,
    }
}