20#ifndef _SOURCE_TYPES_TFQUATERNION_H_
21#define _SOURCE_TYPES_TFQUATERNION_H_
23#include <Magnum/Math/Quaternion.h>
32 template<
class T>
using QuaternionBase = Magnum::Math::Quaternion<T>;
44 return QuaternionBase<T>::fromMatrix((
const Magnum::Math::Matrix<3, T>&)
matrix);
55 template<
class U = T>
operator QuaternionBase<U>*() {
return static_cast<QuaternionBase<U>*
>(
this); }
56 template<
class U = T>
operator const QuaternionBase<U>*() {
return static_cast<const QuaternionBase<U>*
>(
this); }
57 template<
class U = T>
operator QuaternionBase<U>() {
return static_cast<QuaternionBase<U>
>(*this); }
58 template<
class U = T>
operator const QuaternionBase<U>()
const {
return static_cast<const QuaternionBase<U>
>(*this); }
61 T*
data() {
return QuaternionBase<T>::data(); }
64 constexpr const T*
data()
const {
return QuaternionBase<T>::data(); }
69 bool isNormalized()
const {
return QuaternionBase<T>::isNormalized(); }
76 T&
scalar() {
return QuaternionBase<T>::scalar(); }
83 constexpr T scalar()
const {
return QuaternionBase<T>::scalar(); }
86 T angle()
const {
return T(QuaternionBase<T>::angle()); }
99 auto v = QuaternionBase<T>::toEuler();
102 TQuaternion<T> operator-()
const {
return QuaternionBase<T>::operator-(); }
114 T dot()
const {
return QuaternionBase<T>::dot(); }
117 T length()
const {
return QuaternionBase<T>::length(); }
137 operator std::vector<T>&()
const {
138 std::vector<T>& v =
vector();
139 std::vector<T> *
result =
new std::vector<T>(v.begin(), v.end());
148 std::vector<T> *
result =
new std::vector<T>(*
this);
160 os << std::string(
"{") << vec[0];
161 for(
int i = 1; i < vec.length(); ++i) os << std::string(
",") << vec[i];
162 os <<
"," << q.
scalar() << std::string(
"}");
Definition tfMatrix3.h:35
Definition tfQuaternion.h:35
bool isNormalized() const
Definition tfQuaternion.h:69
TVector3< T > transformVectorNormalized(const TVector3< T > &vector) const
Definition tfQuaternion.h:135
TQuaternion< T > invertedNormalized() const
Definition tfQuaternion.h:129
static TQuaternion< T > fromMatrix(const TMatrix3< T > &matrix)
Definition tfQuaternion.h:43
TQuaternion< T > conjugated() const
Definition tfQuaternion.h:123
TVector3< T > axis() const
Definition tfQuaternion.h:92
T angle() const
Definition tfQuaternion.h:86
T * data()
Definition tfQuaternion.h:61
T angle(const TQuaternion &other) const
Definition tfQuaternion.h:89
TVector3< T > & vector()
Definition tfQuaternion.h:73
TQuaternion< T > inverted() const
Definition tfQuaternion.h:126
constexpr const TVector3< T > vector() const
Definition tfQuaternion.h:80
T length() const
Definition tfQuaternion.h:117
TMatrix3< T > toMatrix() const
Definition tfQuaternion.h:95
constexpr T scalar() const
Definition tfQuaternion.h:83
T & scalar()
Definition tfQuaternion.h:76
T dot() const
Definition tfQuaternion.h:114
TVector3< T > transformVector(const TVector3< T > &vector) const
Definition tfQuaternion.h:132
constexpr const T * data() const
Definition tfQuaternion.h:64
TQuaternion< T > normalized() const
Definition tfQuaternion.h:120
TVector3< T > toEuler() const
Definition tfQuaternion.h:98
static TQuaternion< T > rotation(T angle, const TVector3< T > &normalizedAxis)
Definition tfQuaternion.h:38
Definition tfVector3.h:35
Native Tissue Forge type definitions.
Definition tfMatrix.h:33