1#ifndef OPAL_QUATERNION_H
2#define OPAL_QUATERNION_H
10 Quaternion(
const double&,
const double&,
const double&,
const double&);
12 Quaternion(
const double&,
const ippl::Vector<double, 3>&);
33 ippl::Vector<double, 3>
imag()
const;
35 ippl::Vector<double, 3>
rotate(
const ippl::Vector<double, 3>&)
const;
53 const double& x0,
const double& x1,
const double& x2,
const double& x3)
54 : Vector<double, 4>(x0, x1, x2, x3) {
64 :
Quaternion(realPart, vec(0), vec(1), vec(2)) {
73 return std::sqrt(this->
Norm());
77 return (std::abs(this->
Norm() - 1.0) < 1e-12);
81 return (std::abs((*
this)(0)) < 1e-12);
99 ippl::Vector<double, 3> vec((*
this)(1), (*
this)(2), (*
this)(3));
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
Quaternion getQuaternion(ippl::Vector< double, 3 > vec, ippl::Vector< double, 3 > reference)
boost::numeric::ublas::matrix< double > matrix_t
Quaternion conjugate() const
Quaternion inverse() const
ippl::Vector< double, 3 > rotate(const ippl::Vector< double, 3 > &) const
Quaternion & operator*=(const Quaternion &)
Quaternion operator/(const double &) const
Quaternion & operator=(const Quaternion &)=default
Quaternion operator*(const double &) const
matrix_t getRotationMatrix() const
ippl::Vector< double, 3 > imag() const