98 operator/=(
mag(*
this));
104 return quaternion(-(v() & u), w()*u + (v() ^ u));
116 return (
conjugate(*this).mulq0v(u)*(*this)).v();
158 w() = w()*q.
w() - (v() & q.
v());
159 v() = w0*q.
v() + q.
w()*v() + (v() ^ q.
v());
164 return operator*=(
inv(q));
215 scalar magSqrq =
magSqr(q);
228 scalar w2 =
sqr(w());
229 scalar x2 =
sqr(v().x());
230 scalar y2 =
sqr(v().
y());
231 scalar z2 =
sqr(v().z());
233 scalar txy = 2*v().x()*v().y();
234 scalar twz = 2*w()*v().z();
235 scalar txz = 2*v().x()*v().z();
236 scalar twy = 2*w()*v().y();
237 scalar tyz = 2*v().y()*v().z();
238 scalar twx = 2*w()*v().x();
242 w2 + x2 - y2 - z2, txy - twz, txz + twy,
243 txy + twz, w2 - x2 + y2 - z2, tyz - twx,
244 txz - twy, tyz + twx, w2 - x2 - y2 + z2
291 return q1.
w()*q2.
w() + (q1.
v() & q2.
v());
303 q1.
w()*q2.w() - (q1.
v() & q2.v()),
304 q1.
w()*q2.v() + q2.w()*q1.
v() + (q1.
v() ^ q2.v())