mazth 0.6.0

Matrix utilities.
Documentation
use i_shape::IShape;

use line::Line3;
use triprism::TriPrism;

#[test]
fn test_intersect_line() {
    //intersection
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.25, 0.25, 0.], &[1., 1., 0.]);

        match a.get_intersect(&b) {
            (true, Some(_loc)) => {}
            _ => panic!("unexpected result for triprism line intersection"),
        }
    }
    //intersection
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.5, -50., 0.], &[0.5, 50., 0.]);

        match a.get_intersect(&b) {
            (true, Some(_loc)) => {}
            _ => panic!("unexpected result for triprism line intersection"),
        }
    }
    //intersection
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.25, 0.25, 0.5], &[0.26, 0.26, 0.5]);

        match a.get_intersect(&b) {
            (true, Some(_loc)) => {}
            _ => panic!("unexpected result for triprism line intersection"),
        }
    }

    //intersection, flipped
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.25, 0.25, 0.], &[1., 1., 0.]);

        match b.get_intersect(&a) {
            (true, Some(_loc)) => {}
            _ => panic!("unexpected result for triprism line intersection"),
        }
    }
    //intersection, flipped
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.5, -50., 0.], &[0.5, 50., 0.]);

        match b.get_intersect(&a) {
            (true, Some(_loc)) => {}
            _ => panic!("unexpected result for triprism line intersection"),
        }
    }
    //intersection, flipped
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.25, 0.25, 0.5], &[0.26, 0.26, 0.5]);

        match b.get_intersect(&a) {
            (true, Some(_loc)) => {}
            _ => panic!("unexpected result for triprism line intersection"),
        }
    }

    //no intersection
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0.25, 0.25, 1.5], &[1., 1., 1.5]);

        match a.get_intersect(&b) {
            (true, Some(_loc)) => {
                panic!("unexpected result for triprism line intersection");
            }
            _ => {}
        }
    }

    //no intersection
    {
        let a = TriPrism::init(&[0., 0., 0., 1., 0., 0., 1., 1., 0.], 1.);

        let b = Line3::init(&[0., -5., 0.5], &[50., 45., 0.5]);

        match a.get_intersect(&b) {
            (true, Some(_loc)) => {
                panic!("unexpected result for triprism line intersection");
            }
            _ => {}
        }
    }
}