37 constexpr Qua() =
default;
92 this->
w = c.
x() *
c.y() *
c.z() + s.
x() * s.
y() * s.
z();
93 this->
x = s.
x() *
c.y() *
c.z() -
c.x() * s.
y() * s.
z();
94 this->
y = c.
x() * s.
y() *
c.z() + s.
x() *
c.y() * s.
z();
95 this->
z = c.
x() *
c.y() * s.
z() - s.
x() * s.
y() *
c.z();
125 this->
w =
static_cast<T>(q.
w);
126 this->
x =
static_cast<T>(q.
x);
127 this->
y =
static_cast<T>(q.
y);
128 this->
z =
static_cast<T>(q.
z);
135 this->
w +=
static_cast<T>(q.
w);
136 this->
x +=
static_cast<T>(q.
x);
137 this->
y +=
static_cast<T>(q.
y);
138 this->
z +=
static_cast<T>(q.
z);
145 this->
w -=
static_cast<T>(q.
w);
146 this->
x -=
static_cast<T>(q.
x);
147 this->
y -=
static_cast<T>(q.
y);
148 this->
z -=
static_cast<T>(q.
z);
157 this->
w = p.
w * q.
w - p.
x * q.
x - p.
y * q.
y - p.
z * q.
z;
158 this->
x = p.
w * q.
x + p.
x * q.
w + p.
y * q.
z - p.
z * q.
y;
159 this->
y = p.
w * q.
y + p.
y * q.
w + p.
z * q.
x - p.
x * q.
z;
160 this->
z = p.
w * q.
z + p.
z * q.
w + p.
x * q.
y - p.
y * q.
x;
167 this->
w *=
static_cast<T>(s);
168 this->
x *=
static_cast<T>(s);
169 this->
y *=
static_cast<T>(s);
170 this->
z *=
static_cast<T>(s);
177 this->
w /=
static_cast<T>(s);
178 this->
x /=
static_cast<T>(s);
179 this->
y /=
static_cast<T>(s);
180 this->
z /=
static_cast<T>(s);
227 return v + ((
uv * q.
w) +
uuv) *
static_cast<T>(2);
269 return o <<
"Quaternion(" <<
v.w <<
", " <<
v.x <<
", " <<
v.y <<
", " <<
v.z <<
')';
275 std::stringstream
ss;
277 return std::move(
ss).str();
282 template<
size_t I,
typename T>
285 template<
size_t I,
typename T>
288 template<
size_t I,
typename T>
291 template<
size_t I,
typename T>
296struct std::tuple_size<
osc::Qua<T>> {
297 static inline constexpr size_t value = 4;
300template<
size_t I,
typename T>
301struct std::tuple_element<I,
osc::Qua<T>> {
constexpr reference x()
Returns (*this)[0]
Definition vector.h:157
constexpr reference z()
Returns (*this)[2]
Definition vector.h:167
constexpr reference w()
Returns (*this)[3]
Definition vector.h:172
constexpr reference y()
Returns (*this)[1]
Definition vector.h:162
Definition custom_decoration_generator.h:5
std::ostream & operator<<(std::ostream &, const Object &)
GenType cos(GenType v)
Definition trigonometric_functions.h:34
Qua< T > quaternion_cast(const Matrix< T, 3, 3 > &m)
Definition quaternion_functions.h:73
constexpr std::common_type_t< Angle< Rep1, Units1 >, Angle< Rep2, Units2 > > operator+(const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs)
Definition angle.h:99
Matrix< T, 3, 3 > operator/(const Matrix< T, 3, 3 > &m, T scalar)
Definition matrix3x3.h:341
constexpr T dot(T x, T y)
Definition geometric_functions.h:29
constexpr const T & get(const Rgb< T > &v)
Definition rgb.h:88
T abs(T num)
Definition common_functions.h:24
std::string to_string(const Matrix< T, C, R > &m)
Definition matrix.h:32
constexpr U to(T &&value)
Definition conversion.h:56
GenType sin(GenType v)
Definition trigonometric_functions.h:13
T inverse(const Matrix< T, 3, 3 > &m)
Definition matrix_functions.h:158
Vector< T, N > normalize(const Vector< T, N > &v)
Definition geometric_functions.h:74
Matrix< T, 3, 3 > operator*(const Matrix< T, 3, 3 > &m, T scalar)
Definition matrix3x3.h:273
T sqrt(T num)
Definition geometric_functions.h:14
constexpr CoordinateDirection cross(CoordinateDirection x, CoordinateDirection y)
Definition coordinate_direction.h:117
constexpr std::common_type_t< Angle< Rep1, Units1 >, Angle< Rep2, Units2 > > operator-(const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs)
Definition angle.h:114
constexpr reference operator[](size_type pos)
Definition qua.h:117
T * iterator
Definition qua.h:30
constexpr Qua(T w_, T x_, T y_, T z_)
Definition qua.h:45
T value_type
Definition qua.h:23
size_t size_type
Definition qua.h:24
Qua(const Matrix< T, 3, 3 > &m)
Definition qua.h:99
static constexpr Qua< T > wxyz(T w, T x, T y, T z)
Definition qua.h:34
constexpr iterator end()
Definition qua.h:115
constexpr const_iterator begin() const
Definition qua.h:114
constexpr const_pointer data() const
Definition qua.h:112
constexpr const_iterator end() const
Definition qua.h:116
ptrdiff_t difference_type
Definition qua.h:25
constexpr pointer data()
Definition qua.h:111
friend constexpr bool operator==(const Qua &, const Qua &)=default
const T * const_iterator
Definition qua.h:31
constexpr Qua< T > & operator=(const Qua< U > &q)
Definition qua.h:123
const T * const_pointer
Definition qua.h:29
constexpr Qua(const Qua< U > &q)
Definition qua.h:51
constexpr Qua< T > & operator-=(const Qua< U > &q)
Definition qua.h:143
T * pointer
Definition qua.h:28
constexpr Qua< T > & operator*=(const Qua< U > &r)
Definition qua.h:153
constexpr Qua< T > & operator+=(const Qua< U > &q)
Definition qua.h:133
constexpr Qua< T > & operator/=(U s)
Definition qua.h:175
constexpr iterator begin()
Definition qua.h:113
constexpr const_reference operator[](size_type pos) const
Definition qua.h:118
Qua(const Vector< T, 3 > &u, const Vector< T, 3 > &v)
Definition qua.h:64
constexpr Qua(T s, const Vector< T, 3 > &v)
Definition qua.h:40
Qua(const Matrix< T, 4, 4 > &m)
Definition qua.h:105
T & reference
Definition qua.h:26
const T & const_reference
Definition qua.h:27
constexpr Qua< T > & operator*=(U s)
Definition qua.h:165
constexpr size_type size() const
Definition qua.h:110
Qua(const EulerAngles &euler_angles)
Definition qua.h:87
T type
Definition qua.h:302