19 Quat (sc
, Vector(x
,y
,z
));
22 Quat::Quat(double roll
,
26 Quat
Qr (cos (roll
/2),
30 Quat
Qp (cos (pitch
/2),
39 Quat res
= Qr
* Qp
* Qy
;
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 ());