@@ -204,6 +204,13 @@ namespace detail
typename detail::tquat<T>::value_type const & angle,
detail::tvec3<T> const & v);
+ /// Returns euler angles, yitch as x, yaw as y, roll as z.
+ ///
+ /// @see gtc_quaternion
+ template <typename T>
+ detail::tvec3<T> eulerAngles(
+ detail::tquat<T> const & x);
+
/// Converts a quaternion to a 3 * 3 matrix.
///
/// @see gtc_quaternion
@@ -31,6 +31,12 @@
namespace glm{
namespace detail
{
+ GLM_FUNC_QUALIFIER typename tquat<T>::size_type tquat<T>::length() const
+ {
+ return 4;
+ }
template <typename T>
GLM_FUNC_QUALIFIER tquat<T>::tquat() :
x(0),
@@ -494,6 +500,15 @@ namespace detail
//return gtc::quaternion::cross(q, detail::tquat<T>(cos(AngleRad * T(0.5)), Tmp.x * fSin, Tmp.y * fSin, Tmp.z * fSin));
}
+ GLM_FUNC_QUALIFIER detail::tvec3<T> eulerAngles
+ (
+ detail::tquat<T> const & x
+ )
+ return detail::tvec3<T>(pitch(x), yaw(x), roll(x));
GLM_FUNC_QUALIFIER detail::tmat3x3<T> mat3_cast
(
@@ -176,12 +176,6 @@ namespace glm
template <typename valType>
valType yaw(
detail::tquat<valType> const & x);
-
- //! Returns euler angles, yitch as x, yaw as y, roll as z.
- //! From GLM_GTX_quaternion extension.
- template <typename valType>
- detail::tvec3<valType> eulerAngles(
- detail::tquat<valType> const & x);
//! Converts a quaternion to a 3 * 3 matrix.
//! From GLM_GTX_quaternion extension.
@@ -234,15 +234,6 @@ namespace glm
return glm::degrees(asin(valType(-2) * (q.x * q.z - q.w * q.y)));
- GLM_FUNC_QUALIFIER detail::tvec3<valType> eulerAngles
- (
- detail::tquat<valType> const & x
- )
- {
- return detail::tvec3<valType>(pitch(x), yaw(x), roll(x));
- }
GLM_FUNC_QUALIFIER detail::tquat<T> shortMix
@@ -181,7 +181,9 @@ void test_mulD(std::vector<glm::mat4> const & Data, std::vector<glm::mat4> & Out
_mm_prefetch((char*)&Data[i + 1], _MM_HINT_T0);
glm::simdMat4 m(Data[i]);
- glm::detail::sse_mul_ps((__m128 const * const)&m, (__m128 const * const)&m, (__m128*)&Out[i]);
+ glm::simdMat4 o;
+ glm::detail::sse_mul_ps((__m128 const * const)&m, (__m128 const * const)&m, (__m128*)&o);
+ Out[i] = *(glm::mat4*)&o;
std::clock_t TimeEnd = clock();