Updated the to use static libraries too.
[blobbuild.git] / Quat.cpp
blobc66e2a38e4d69ff5626c277d689d7c80a16fed86
1 #include <math.h>
3 #include "Quat.h"
5 Quat::Quat () {}
7 Quat::Quat(double sc,
8 Vector vec)
10 s = sc;
11 v = vec;
14 Quat::Quat(double sc,
15 double x,
16 double y,
17 double z)
19 Quat (sc, Vector(x,y,z));
22 Quat::Quat(double roll,
23 double pitch,
24 double yaw)
26 Quat Qr (cos (roll/2),
27 sin (roll/2),
28 0,
29 0);
30 Quat Qp (cos (pitch/2),
31 0,
32 sin (pitch/2),
33 0);
34 Quat Qy (cos (yaw/2),
37 sin (yaw/2));
39 Quat res = Qr * Qp * Qy;
41 s = res.s;
42 v = res.v;
45 Quat Quat::operator+(const Quat& q2) const
47 return Quat (s + q2.s, v + q2.v);
50 Quat Quat::operator-(const Quat& q2) const
52 return Quat (s - q2.s, v - q2.v);
55 Quat Quat::operator*(const Quat& q2) const
57 return Quat (s * q2.s - v.dot (q2.v),
58 q2.v.scale (s) + v.scale (q2.s) + v.cross (q2.v)
62 Quat Quat::conj () const
64 return Quat (s, v.scale (-1));
67 double Quat::norm () const
69 return s*s + v.dot(v);
72 Quat Quat::scale (double sc) const
74 return Quat (s, v.scale (sc));
77 Quat Quat::inv () const
79 return this->conj ().scale (1.0 / this->norm ());