mazth 0.6.0

Matrix utilities.
Documentation
use bound::AxisAlignedBBox;
use i_bound::IBound;

#[test]
fn test_bound_aabb() {
    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        assert!(aabb0.intersect(&aabb1) == true);
    }
    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [10f64, 20f64, 30f64],
            _bound_upper: [20f64, 30f64, 40f64],
        };

        assert!(aabb0.intersect(&aabb1) == true);
    }

    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [10f64, 20f64, 30f64],
            _bound_upper: [20f64, 30f64, 40f64],
        };

        assert!(aabb1.intersect(&aabb0) == true);
    }

    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [11f64, 21f64, 31f64],
            _bound_upper: [20f64, 30f64, 40f64],
        };

        assert!(aabb0.intersect(&aabb1) == false);
    }

    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [9f64, 19f64, 31f64],
            _bound_upper: [20f64, 30f64, 40f64],
        };

        assert!(aabb0.intersect(&aabb1) == false);
    }

    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, 0f64, 0f64],
            _bound_upper: [10f64, 20f64, 30f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [9f64, 19f64, 31f64],
            _bound_upper: [20f64, 30f64, 40f64],
        };

        assert!(aabb1.intersect(&aabb0) == false);
    }
    {
        let aabb0 = AxisAlignedBBox {
            _bound_lower: [0f64, -9f64, -18f64],
            _bound_upper: [10f64, 20f64, 40f64],
        };

        let aabb1 = AxisAlignedBBox {
            _bound_lower: [9f64, -20f64, 31f64],
            _bound_upper: [20f64, 30f64, 10f64],
        };

        let mut aabb_union: AxisAlignedBBox = Default::default();
        let bounds = [&aabb0 as &dyn IBound, &aabb1 as &dyn IBound];
        aabb_union.get_union(&bounds[..]);

        assert!(aabb_union._bound_lower[0] == 0f64);
        assert!(aabb_union._bound_lower[1] == -20f64);
        assert!(aabb_union._bound_lower[2] == -18f64);

        assert!(aabb_union._bound_upper[0] == 20f64);
        assert!(aabb_union._bound_upper[1] == 30f64);
        assert!(aabb_union._bound_upper[2] == 40f64);
    }
}