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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*!
# **rustool**

Personal toolbox for my Rust projects

## Using **rustool**

Simply add the following to your `Cargo.toml` file:

```.ignore
[dependencies]
rustool = "*" // replace * by the latest version of the crate
```
*/

/// Main functionalities.
pub mod core;

pub use crate::core::*;

extern crate alga;
extern crate itertools;
extern crate log;
extern crate nalgebra as na;
extern crate num_traits;
extern crate simplelog;
#[macro_use]
extern crate approx;

use na::{
    Dynamic, Matrix, Matrix3xX, MatrixSlice3xX, RowDVector, SliceStorage, UnitVector3, Vector3,
    VectorSlice3, U1, U3,
};

/// Type alias for [`RowDVector`]. The matrix has 1 row and X columns.
pub type List<T> = RowDVector<T>;

/// The matrix does not own the data and has 1 row and X columns. See [`List`] for list of owned
/// data.
pub type ListSlice<'a, T> = Matrix<T, U1, Dynamic, SliceStorage<'a, T, U1, Dynamic, U1, Dynamic>>;

/// Type alias for [`Vector3`]. The matrix has 3 rows and 1 column.
pub type Vector<T> = Vector3<T>;

/// Type alias for [`VectorSlice3`]. The matrix does not own the data and has 3 rows and 1 column.
/// See [`Vector`] for owned vector data.
pub type VectorSlice<'a, T> = VectorSlice3<'a, T>;

/// Type alias for [`UnitVector3`]. The matrix has 3 rows and 1 column.
pub type Unit<T> = UnitVector3<T>;

/// Type alias for [`Matrix3xX`]. The matrix has 3 rows and X columns.
pub type Vectors<T> = Matrix3xX<T>;

/// Type alias for [`MatrixSlice3xX`]. The matrix does not own the data and has 3 rows and X column.
/// See [`Vectors`] for list of owned vector data.
pub type VectorsSlice<'a, T> = MatrixSlice3xX<'a, T>;

/// Type alias for [`Matrix3xX`]. The matrix has 3 rows and X columns.
pub type VectorsGeneric<T, S> = Matrix<T, U3, Dynamic, S>;