1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use nalgebra::Vector3;
use alga::general::Real;

/// Steerable agent interface
pub trait Steerable<T: Real> {
    /// returns the linear velocity vector of the agent
    fn get_linear_velocity(self: &Self) -> &Vector3<T>;

    /// returns angular velocity of the agent
    fn get_angular_velocity(self: &Self) -> T;

    /// returns bounding circle radius of the agent
    fn get_bounding_radius(self: &Self) -> T;

    fn get_position(self: &Self) -> &Vector3<T>;

    fn get_orientation(&self) -> T;
}