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
extern crate nalgebra as na;
use self::na::{Matrix3, Vector3};
use std::f64;
pub fn tilde_matrix(v: &Vector3<f64>) -> Matrix3<f64> {
Matrix3::new(
0.0,
-v[(2, 0)],
v[(1, 0)],
v[(2, 0)],
0.0,
-v[(0, 0)],
-v[(1, 0)],
v[(0, 0)],
0.0,
)
}
pub fn is_diagonal(m: &Matrix3<f64>) -> bool {
let mut is_diag = true;
for i in 1..2 {
for j in 0..i {
if (i == j && (m[(i, j)] - m[(0, 0)]) > f64::EPSILON)
|| (i != j
&& (m[(i, j)].abs() > f64::EPSILON
|| (m[(i, j)] - m[(j, i)]).abs() > f64::EPSILON))
{
is_diag = false;
break;
}
}
}
is_diag
}