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
use na::{self, RealField, Unit};
use crate::aliases::Qua;
pub fn quat_conjugate<N: RealField>(q: &Qua<N>) -> Qua<N> {
q.conjugate()
}
pub fn quat_inverse<N: RealField>(q: &Qua<N>) -> Qua<N> {
q.try_inverse().unwrap_or_else(na::zero)
}
pub fn quat_lerp<N: RealField>(x: &Qua<N>, y: &Qua<N>, a: N) -> Qua<N> {
x.lerp(y, a)
}
pub fn quat_slerp<N: RealField>(x: &Qua<N>, y: &Qua<N>, a: N) -> Qua<N> {
Unit::new_normalize(*x)
.slerp(&Unit::new_normalize(*y), a)
.into_inner()
}