1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use interface::i_bound::IBound;
use interface::i_vicinity::IVicinity;
use implement::math::mat::Mat3x1;
pub enum ShapeType {
POINT,
RAY,
SPHERE,
PLANE,
TRIG,
BOX,
COMPLEX,
}
pub trait IShape : IVicinity< f64 > {
fn get_shape_data( & self ) -> Vec< f64 >;
fn get_type( & self ) -> ShapeType;
fn get_bound( & self ) -> &IBound;
fn get_intersect( & self, other: & IShape ) -> ( bool, Option< Mat3x1< f64 > > );
fn get_support( & self, v: & Mat3x1< f64 > ) -> Option< Mat3x1< f64 > >;
}