Quaternion

This class represents a general quaternion, i.e. a quaternion that may not have \left\lVert \mathbf{Q} \right\rVert = 1. It’s not used in NEML natively, just as a base class to the unit quaternion orientation class.

class Quaternion

A generic quaternion, stored as [s v1 v2 v3].

Subclassed by neml::Orientation

Public Functions

Quaternion()

Default constructor (manage own memory)

Quaternion(const std::vector<double> v)

Construct from vector (manage own memory)

Quaternion(double *v)

Construct from raw pointer (don’t manage memory)

Quaternion(const Quaternion &other)

Copy constructor.

Quaternion(const Quaternion &&other)

Move constructor.

virtual ~Quaternion()
Quaternion &operator=(const Quaternion &rhs)

Copy.

Quaternion &operator=(const Quaternion &&rhs)

Move.

bool store() const

Do you store your own data?

const double *quat() const

Raw quaternion as a const pointer.

double *data()

Raw quaternion as a nonconst pointer.

virtual double norm() const

Quaternion norm.

Quaternion opposite() const

Opposite.

Quaternion operator-() const

C++ operator opposite.

Quaternion conj() const

Conjugation.

Quaternion flip() const

Opposite scalar.

Quaternion inverse() const

Inversion.

Quaternion exp() const

Exponential map.

Quaternion log() const

Inverse exponential map.

Quaternion &operator*=(const Quaternion &rhs)

Quaternion multiplication.

Quaternion &operator*=(double scalar)

Scalar multiplication.

Quaternion &operator/=(const Quaternion &rhs)

Quaternion division.

Quaternion &operator/=(double scalar)

Scalar division.

Quaternion pow(double w) const

Power.

double dot(const Quaternion &other) const

Dot product, useful for various distances.

size_t hash() const

Hash function for quick comparisons.

void to_product_matrix(double *M) const

Product matrix for quaternion composition.