diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index 25df0f22..40c910d8 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -76,6 +76,23 @@ namespace glm T x, y, z, w; + static const type ZERO; + static const type X; + static const type Y; + static const type Z; + static const type W; + static const type XY; + static const type XZ; + static const type XW; + static const type YZ; + static const type YW; + static const type ZW; + static const type XYZ; + static const type XYW; + static const type XZW; + static const type YZW; + static const type XYZW; + // -- Component accesses -- # ifdef GLM_FORCE_SIZE_FUNC diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl index 4c8565bc..8d846cba 100644 --- a/glm/gtc/quaternion.inl +++ b/glm/gtc/quaternion.inl @@ -49,6 +49,69 @@ namespace detail }; }//namespace detail +template +const tquat tquat::ZERO = + tquat(static_cast(0), static_cast(0), static_cast(0), static_cast(0)); + +template +const tquat tquat::X = + tquat(static_cast(0), static_cast(1), static_cast(0), static_cast(0)); + +template +const tquat tquat::Y = + tquat(static_cast(0), static_cast(0), static_cast(1), static_cast(0)); + +template +const tquat tquat::Z = + tquat(static_cast(0), static_cast(0), static_cast(0), static_cast(1)); + +template +const tquat tquat::W = + tquat(static_cast(1), static_cast(0), static_cast(0), static_cast(0)); + +template +const tquat tquat::XY = + tquat(static_cast(0), static_cast(1), static_cast(1), static_cast(0)); + +template +const tquat tquat::XZ = + tquat(static_cast(0), static_cast(0), static_cast(1), static_cast(1)); + +template +const tquat tquat::XW = + tquat(static_cast(1), static_cast(1), static_cast(0), static_cast(0)); + +template +const tquat tquat::YZ = + tquat(static_cast(0), static_cast(0), static_cast(1), static_cast(1)); + +template +const tquat tquat::YW = + tquat(static_cast(1), static_cast(0), static_cast(1), static_cast(0)); + +template +const tquat tquat::ZW = + tquat(static_cast(1), static_cast(0), static_cast(0), static_cast(1)); + +template +const tquat tquat::XYZ = + tquat(static_cast(0), static_cast(1), static_cast(1), static_cast(1)); + +template +const tquat tquat::XYW = + tquat(static_cast(1), static_cast(1), static_cast(1), static_cast(0)); + +template +const tquat tquat::XZW = + tquat(static_cast(1), static_cast(1), static_cast(0), static_cast(1)); + +template +const tquat tquat::YZW = + tquat(static_cast(1), static_cast(0), static_cast(1), static_cast(1)); + +template +const tquat tquat::XYZW = + tquat(static_cast(1), static_cast(1), static_cast(1), static_cast(1)); // -- Component accesses -- # ifdef GLM_FORCE_SIZE_FUNC diff --git a/glm/gtx/simd_quat.hpp b/glm/gtx/simd_quat.hpp index 97075ba6..ca9ae2c2 100644 --- a/glm/gtx/simd_quat.hpp +++ b/glm/gtx/simd_quat.hpp @@ -91,6 +91,23 @@ namespace detail __m128 Data; #endif + static const type ZERO; + static const type X; + static const type Y; + static const type Z; + static const type W; + static const type XY; + static const type XZ; + static const type XW; + static const type YZ; + static const type YW; + static const type ZW; + static const type XYZ; + static const type XYW; + static const type XZW; + static const type YZW; + static const type XYZW; + ////////////////////////////////////// // Implicit basic constructors diff --git a/glm/gtx/simd_quat.inl b/glm/gtx/simd_quat.inl index 2fcc7fe4..95d73037 100644 --- a/glm/gtx/simd_quat.inl +++ b/glm/gtx/simd_quat.inl @@ -51,6 +51,23 @@ void print(const fvec4SIMD &v) } #endif +const fquatSIMD fquatSIMD::ZERO = fquatSIMD(0, 0, 0, 0); +const fquatSIMD fquatSIMD::X = fquatSIMD(0, 1, 0, 0); +const fquatSIMD fquatSIMD::Y = fquatSIMD(0, 0, 1, 0); +const fquatSIMD fquatSIMD::Z = fquatSIMD(0, 0, 0, 1); +const fquatSIMD fquatSIMD::W = fquatSIMD(1, 0, 0, 0); +const fquatSIMD fquatSIMD::XY = fquatSIMD(0, 1, 1, 0); +const fquatSIMD fquatSIMD::XZ = fquatSIMD(0, 1, 0, 1); +const fquatSIMD fquatSIMD::XW = fquatSIMD(1, 1, 0, 0); +const fquatSIMD fquatSIMD::YZ = fquatSIMD(0, 0, 1, 1); +const fquatSIMD fquatSIMD::YW = fquatSIMD(1, 0, 1, 0); +const fquatSIMD fquatSIMD::ZW = fquatSIMD(1, 0, 0, 1); +const fquatSIMD fquatSIMD::XYZ = fquatSIMD(0, 1, 1, 1); +const fquatSIMD fquatSIMD::XYW = fquatSIMD(1, 1, 1, 0); +const fquatSIMD fquatSIMD::XZW = fquatSIMD(1, 1, 0, 1); +const fquatSIMD fquatSIMD::YZW = fquatSIMD(1, 0, 1, 1); +const fquatSIMD fquatSIMD::XYZW = fquatSIMD(1, 1, 1, 1); + ////////////////////////////////////// // Implicit basic constructors diff --git a/glm/gtx/simd_vec4.hpp b/glm/gtx/simd_vec4.hpp index cb084852..0eb44fa4 100644 --- a/glm/gtx/simd_vec4.hpp +++ b/glm/gtx/simd_vec4.hpp @@ -114,6 +114,23 @@ namespace detail __m128 Data; #endif + static const type ZERO; + static const type X; + static const type Y; + static const type Z; + static const type W; + static const type XY; + static const type XZ; + static const type XW; + static const type YZ; + static const type YW; + static const type ZW; + static const type XYZ; + static const type XYW; + static const type XZW; + static const type YZW; + static const type XYZW; + ////////////////////////////////////// // Implicit basic constructors diff --git a/glm/gtx/simd_vec4.inl b/glm/gtx/simd_vec4.inl index e375073f..3ff7d47e 100644 --- a/glm/gtx/simd_vec4.inl +++ b/glm/gtx/simd_vec4.inl @@ -16,6 +16,23 @@ struct shuffle_mask enum{value = Value}; }; +const fvec4SIMD fvec4SIMD::ZERO = fvec4SIMD(0, 0, 0, 0); +const fvec4SIMD fvec4SIMD::X = fvec4SIMD(1, 0, 0, 0); +const fvec4SIMD fvec4SIMD::Y = fvec4SIMD(0, 1, 0, 0); +const fvec4SIMD fvec4SIMD::Z = fvec4SIMD(0, 0, 1, 0); +const fvec4SIMD fvec4SIMD::W = fvec4SIMD(0, 0, 0, 1); +const fvec4SIMD fvec4SIMD::XY = fvec4SIMD(1, 1, 0, 0); +const fvec4SIMD fvec4SIMD::XZ = fvec4SIMD(1, 0, 1, 0); +const fvec4SIMD fvec4SIMD::XW = fvec4SIMD(1, 0, 0, 1); +const fvec4SIMD fvec4SIMD::YZ = fvec4SIMD(0, 1, 1, 0); +const fvec4SIMD fvec4SIMD::YW = fvec4SIMD(0, 1, 0, 1); +const fvec4SIMD fvec4SIMD::ZW = fvec4SIMD(0, 0, 1, 1); +const fvec4SIMD fvec4SIMD::XYZ = fvec4SIMD(1, 1, 1, 0); +const fvec4SIMD fvec4SIMD::XYW = fvec4SIMD(1, 1, 0, 1); +const fvec4SIMD fvec4SIMD::XZW = fvec4SIMD(1, 0, 1, 1); +const fvec4SIMD fvec4SIMD::YZW = fvec4SIMD(0, 1, 1, 1); +const fvec4SIMD fvec4SIMD::XYZW = fvec4SIMD(1, 1, 1, 1); + ////////////////////////////////////// // Implicit basic constructors