From f267b6ea182c1ea8a548bff9bbe10a913745e81d Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Wed, 25 Jan 2012 18:54:28 +0000 Subject: [PATCH] Promote GTC_constants --- glm/gtc/constants.hpp | 186 ++++++++++++ glm/{gtx => gtc}/constants.inl | 2 +- glm/gtx/constants.hpp | 159 +--------- glm/gtx/noise.inl | 20 -- glm/gtx/random.inl | 540 --------------------------------- 5 files changed, 190 insertions(+), 717 deletions(-) create mode 100644 glm/gtc/constants.hpp rename glm/{gtx => gtc}/constants.inl (99%) delete mode 100644 glm/gtx/noise.inl delete mode 100644 glm/gtx/random.inl diff --git a/glm/gtc/constants.hpp b/glm/gtc/constants.hpp new file mode 100644 index 00000000..71f85373 --- /dev/null +++ b/glm/gtc/constants.hpp @@ -0,0 +1,186 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref gtc_constants +/// @file glm/gtc/constants.hpp +/// @date 2011-09-30 / 2012-01-25 +/// @author Christophe Riccio +/// +/// @see core (dependence) +/// @see gtc_half_float (dependence) +/// +/// @defgroup gtc_constants GLM_GTC_constants: Provide build-in constants +/// @ingroup gtc +/// +/// @brief Allow to perform bit operations on integer values +/// +/// need to be included to use these features. +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef GLM_GTC_constants +#define GLM_GTC_constants GLM_VERSION + +// Dependency: +#include "../glm.hpp" +#include "../gtc/half_float.hpp" + +#if(defined(GLM_MESSAGES) && !defined(glm_ext)) +# pragma message("GLM: GLM_GTC_constants extension included") +#endif + +namespace glm +{ + /// @addtogroup gtc_constants + /// @{ + + /// Return the epsilon constant for floating point types. + /// @todo Implement epsilon for half-precision floating point type. + /// @see gtc_constants + template + GLM_CONSTEXPR T epsilon(); + + /// Return 0. + /// @see gtc_constants + template + GLM_CONSTEXPR T zero(); + + /// Return 1. + /// @see gtc_constants + template + GLM_CONSTEXPR T one(); + + /// Return the pi constant. + /// @see gtc_constants + template + GLM_CONSTEXPR T pi(); + + /// Return square root of pi. + /// @see gtc_constants + template + GLM_CONSTEXPR T root_pi(); + + /// Return pi / 2. + /// @see gtc_constants + template + GLM_CONSTEXPR T half_pi(); + + /// Return pi / 4. + /// @see gtc_constants + template + GLM_CONSTEXPR T quarter_pi(); + + /// Return 1 / pi. + /// @see gtc_constants + template + GLM_CONSTEXPR T one_over_pi(); + + /// Return 2 / pi. + /// @see gtc_constants + template + GLM_CONSTEXPR T two_over_pi(); + + /// Return 2 / sqrt(pi). + /// @see gtc_constants + template + GLM_CONSTEXPR T two_over_root_pi(); + + /// Return 1 / sqrt(2). + /// @see gtc_constants + template + GLM_CONSTEXPR T one_over_root_two(); + + /// Return sqrt(pi / 2). + /// @see gtc_constants + template + GLM_CONSTEXPR T root_half_pi(); + + /// Return sqrt(2 * pi). + /// @see gtc_constants + template + GLM_CONSTEXPR T root_two_pi(); + + /// Return sqrt(ln(4)). + /// @see gtc_constants + template + GLM_CONSTEXPR T root_ln_four(); + + /// Return e constant. + /// @see gtc_constants + template + GLM_CONSTEXPR T e(); + + /// Return Euler's constant. + /// @see gtc_constants + template + GLM_CONSTEXPR T euler(); + + /// Return sqrt(2). + /// @see gtc_constants + template + GLM_CONSTEXPR T root_two(); + + /// Return sqrt(3). + /// @see gtc_constants + template + GLM_CONSTEXPR T root_three(); + + /// Return sqrt(5). + /// @see gtc_constants + template + GLM_CONSTEXPR T root_five(); + + /// Return ln(2). + /// @see gtc_constants + template + GLM_CONSTEXPR T ln_two(); + + /// Return ln(10). + /// @see gtc_constants + template + GLM_CONSTEXPR T ln_ten(); + + /// Return ln(ln(2)). + /// @see gtc_constants + template + GLM_CONSTEXPR T ln_ln_two(); + + /// Return 1 / 3. + /// @see gtc_constants + template + GLM_CONSTEXPR T third(); + + /// Return 2 / 3. + /// @see gtc_constants + template + GLM_CONSTEXPR T two_thirds(); + + /// Return the golden ratio constant. + /// @see gtc_constants + template + GLM_CONSTEXPR T golden_ratio(); + + /// @} +} //namespace glm + +#include "constants.inl" + +#endif//GLM_GTC_constants diff --git a/glm/gtx/constants.inl b/glm/gtc/constants.inl similarity index 99% rename from glm/gtx/constants.inl rename to glm/gtc/constants.inl index 2b3f2354..63b7b123 100644 --- a/glm/gtx/constants.inl +++ b/glm/gtc/constants.inl @@ -22,7 +22,7 @@ /// /// @ref gtx_constants /// @file glm/gtx/constants.inl -/// @date 2011-10-14 / 2011-10-14 +/// @date 2011-10-14 / 2012-01-25 /// @author Christophe Riccio /////////////////////////////////////////////////////////////////////////////////// diff --git a/glm/gtx/constants.hpp b/glm/gtx/constants.hpp index cf85e4e7..8526249c 100644 --- a/glm/gtx/constants.hpp +++ b/glm/gtx/constants.hpp @@ -19,168 +19,15 @@ /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN /// THE SOFTWARE. -/// -/// @ref gtx_constants -/// @file glm/gtx/constants.hpp -/// @date 2011-09-30 / 2011-09-30 -/// @author Christophe Riccio -/// -/// @see core (dependence) -/// @see gtc_half_float (dependence) -/// -/// @defgroup gtx_constants GLM_GTX_constants: Provide build-in constants -/// @ingroup gtx -/// -/// @brief Allow to perform bit operations on integer values -/// -/// need to be included to use these functionalities. /////////////////////////////////////////////////////////////////////////////////// #ifndef GLM_GTX_constants #define GLM_GTX_constants GLM_VERSION -// Dependency: -#include "../glm.hpp" -#include "../gtc/half_float.hpp" +#include "../gtc/constants.hpp" -#if(defined(GLM_MESSAGES) && !defined(glm_ext)) -# pragma message("GLM: GLM_GTX_constants extension included") +#if(defined(GLM_MESSAGES)) +# pragma message("GLM: GLM_GTX_constants extension is deprecated, include GLM_GTX_constants instead") #endif -namespace glm -{ - /// @addtogroup gtx_constants - /// @{ - - /// Return the epsilon constant for floating point types. - /// @todo Implement epsilon for half-precision floating point type. - /// @see gtx_constants - template - GLM_CONSTEXPR T epsilon(); - - /// Return 0. - /// @see gtx_constants - template - GLM_CONSTEXPR T zero(); - - /// Return 1. - /// @see gtx_constants - template - GLM_CONSTEXPR T one(); - - /// Return the pi constant. - /// @see gtx_constants - template - GLM_CONSTEXPR T pi(); - - /// Return square root of pi. - /// @see gtx_constants - template - GLM_CONSTEXPR T root_pi(); - - /// Return pi / 2. - /// @see gtx_constants - template - GLM_CONSTEXPR T half_pi(); - - /// Return pi / 4. - /// @see gtx_constants - template - GLM_CONSTEXPR T quarter_pi(); - - /// Return 1 / pi. - /// @see gtx_constants - template - GLM_CONSTEXPR T one_over_pi(); - - /// Return 2 / pi. - /// @see gtx_constants - template - GLM_CONSTEXPR T two_over_pi(); - - /// Return 2 / sqrt(pi). - /// @see gtx_constants - template - GLM_CONSTEXPR T two_over_root_pi(); - - /// Return 1 / sqrt(2). - /// @see gtx_constants - template - GLM_CONSTEXPR T one_over_root_two(); - - /// Return sqrt(pi / 2). - /// @see gtx_constants - template - GLM_CONSTEXPR T root_half_pi(); - - /// Return sqrt(2 * pi). - /// @see gtx_constants - template - GLM_CONSTEXPR T root_two_pi(); - - /// Return sqrt(ln(4)). - /// @see gtx_constants - template - GLM_CONSTEXPR T root_ln_four(); - - /// Return e constant. - /// @see gtx_constants - template - GLM_CONSTEXPR T e(); - - /// Return Euler's constant. - /// @see gtx_constants - template - GLM_CONSTEXPR T euler(); - - /// Return sqrt(2). - /// @see gtx_constants - template - GLM_CONSTEXPR T root_two(); - - /// Return sqrt(3). - /// @see gtx_constants - template - GLM_CONSTEXPR T root_three(); - - /// Return sqrt(5). - /// @see gtx_constants - template - GLM_CONSTEXPR T root_five(); - - /// Return ln(2). - /// @see gtx_constants - template - GLM_CONSTEXPR T ln_two(); - - /// Return ln(10). - /// @see gtx_constants - template - GLM_CONSTEXPR T ln_ten(); - - /// Return ln(ln(2)). - /// @see gtx_constants - template - GLM_CONSTEXPR T ln_ln_two(); - - /// Return 1 / 3. - /// @see gtx_constants - template - GLM_CONSTEXPR T third(); - - /// Return 2 / 3. - /// @see gtx_constants - template - GLM_CONSTEXPR T two_thirds(); - - /// Return the golden ratio constant. - /// @see gtx_constants - template - GLM_CONSTEXPR T golden_ratio(); - - /// @} -} //namespace glm - -#include "constants.inl" - #endif//GLM_GTX_constants diff --git a/glm/gtx/noise.inl b/glm/gtx/noise.inl deleted file mode 100644 index b1231846..00000000 --- a/glm/gtx/noise.inl +++ /dev/null @@ -1,20 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////// -// OpenGL Mathematics Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": -// https://github.com/ashima/webgl-noise -// Following Stefan Gustavson's paper "Simplex noise demystified": -// http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Created : 2011-04-21 -// Updated : 2011-04-21 -// Licence : This source is under MIT License -// File : glm/gtx/noise.inl -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Dependency: -// - GLM core -/////////////////////////////////////////////////////////////////////////////////////////////////// - -namespace glm{ - -}//namespace glm diff --git a/glm/gtx/random.inl b/glm/gtx/random.inl deleted file mode 100644 index 0c244229..00000000 --- a/glm/gtx/random.inl +++ /dev/null @@ -1,540 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -// OpenGL Mathematics Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) -////////////////////////////////////////////////////////////////////////////////// -// Created : 2006-01-16 -// Updated : 2006-01-16 -// Licence : This source is under MIT License -// File : glm/gtx/random.inl -////////////////////////////////////////////////////////////////////////////////// - -#include -#include - -namespace glm{ - -template <> -GLM_FUNC_QUALIFIER float signedRand1() -{ - #if(GLM_COMPILER & GLM_COMPILER_VC)// && (GLM_COMPILER < GLM_COMPILER_VC2010) - #define RAND_SHIFT_NUM 5 - #else - #define RAND_SHIFT_NUM 0 - #endif - return float((std::rand() - (RAND_MAX >> 1) - 1) << 1) / float(RAND_MAX - RAND_SHIFT_NUM); -} - -template <> -GLM_FUNC_QUALIFIER double signedRand1() -{ - return double(signedRand1()); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 signedRand2() -{ - return detail::tvec2( - signedRand1(), - signedRand1()); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 signedRand3() -{ - return detail::tvec3( - signedRand1(), - signedRand1(), - signedRand1()); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 signedRand4() -{ - return detail::tvec4( - signedRand1(), - signedRand1(), - signedRand1(), - signedRand1()); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 normalizedRand2( - T Min, - T Max) -{ - return normalizedRand2() * compRand1(Min, Max); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 normalizedRand2() -{ - T a = compRand1(T(0), T(6.283185307179586476925286766559f)); - return detail::tvec2(cos(a), sin(a)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 normalizedRand3( - T Min, - T Max) -{ - return normalizedRand3() * compRand1(Min, Max); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 normalizedRand3() -{ - T z = compRand1(T(-1), T(1)); - T a = compRand1(T(0), T(6.283185307179586476925286766559f)); - - T r = sqrt(T(1) - z * z); - - T x = r * cos(a); - T y = r * sin(a); - - return detail::tvec3(x, y, z); -} - -template <> -GLM_FUNC_QUALIFIER float compRand1() -{ - return float(std::rand()) / float(RAND_MAX); -} - -template <> -GLM_FUNC_QUALIFIER double compRand1() -{ - return double(std::rand()) / double(RAND_MAX); -} - -GLM_FUNC_QUALIFIER detail::half compRand1( - detail::half Min, - detail::half Max) -{ - return compRand1() * (Max - Min) + Min; -} - -GLM_FUNC_QUALIFIER float compRand1( - float Min, - float Max) -{ - return compRand1() * (Max - Min) + Min; -} - -GLM_FUNC_QUALIFIER double compRand1( - double Min, - double Max) -{ - return compRand1() * (Max - Min) + Min; -} - -template -GLM_FUNC_QUALIFIER T compRand1( - T Min, - T Max) -{ - return T(compRand1() * double(Max - Min) + double(Min)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 compRand2( - T Min, - T Max) -{ - return detail::tvec2( - compRand1(Min, Max), - compRand1(Min, Max)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 compRand3( - T Min, - T Max) -{ - return detail::tvec3( - compRand1(Min, Max), - compRand1(Min, Max), - compRand1(Min, Max)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 compRand4( - T Min, - T Max) -{ - return detail::tvec4( - compRand1(Min, Max), - compRand1(Min, Max), - compRand1(Min, Max), - compRand1(Min, Max)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 compRand2( - T Min, - const detail::tvec2& Max) -{ - return detail::tvec2( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 compRand3( - T Min, - const detail::tvec3& Max) -{ - return detail::tvec3( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y), - compRand1(Min.z, Max.z)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 compRand4( - T Min, - const detail::tvec4& Max) -{ - return detail::tvec4( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y), - compRand1(Min.z, Max.z), - compRand1(Min.w, Max.w)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 compRand2( - const detail::tvec2& Min, - T Max) -{ - return detail::tvec2( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 compRand3( - const detail::tvec3& Min, - T Max) -{ - return detail::tvec3( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y), - compRand1(Min.z, Max.z)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 compRand4( - const detail::tvec4& Min, - T Max) -{ - return detail::tvec4( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y), - compRand1(Min.z, Max.z), - compRand1(Min.w, Max.w)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 compRand2( - const detail::tvec2& Min, - const detail::tvec2& Max) -{ - return detail::tvec2( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 compRand3( - const detail::tvec3& Min, - const detail::tvec3& Max) -{ - return detail::tvec3( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y), - compRand1(Min.z, Max.z)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 compRand4( - const detail::tvec4& Min, - const detail::tvec4& Max) -{ - return detail::tvec4( - compRand1(Min.x, Max.x), - compRand1(Min.y, Max.y), - compRand1(Min.z, Max.z), - compRand1(Min.w, Max.w)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 vecRand2() -{ - detail::tvec2 result(float(0)); - do - { - result = compRand2(float(-1), float(1)); - } while (length(result) > float(1)); - - return result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 vecRand2() -{ - detail::tvec2 result(double(0)); - do - { - result = compRand2(double(-1), double(1)); - } while (length(result) > double(1)); - - return result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 vecRand2( - T MinRadius, - T MaxRadius) -{ - assert(MinRadius <= MaxRadius); - - detail::tvec2 Result(T(0)); - T LenRadius(0); - - do - { - Result = compRand2(-MaxRadius, MaxRadius); - LenRadius = length(Result); - } - while(LenRadius > MaxRadius || LenRadius < MinRadius); - - return Result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 vecRand3() -{ - detail::tvec3 Result(T(0)); - do - { - Result = compRand3(T(-1), T(1)); - } - while(length(Result) > T(1)); - - return Result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 vecRand3( - T MinRadius, - T MaxRadius) -{ - assert(MinRadius <= MaxRadius); - - detail::tvec3 Result(0); - T LenRadius(0); - - do - { - Result = compRand3(-MaxRadius, MaxRadius); - LenRadius = length(Result); - } - while(LenRadius > MaxRadius || LenRadius < MinRadius); - - return Result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 vecRand4() -{ - detail::tvec4 result(float(0)); - do - { - result = compRand4(float(-1), float(1)); - } while (length(result) > float(1)); - - return result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 vecRand4() -{ - detail::tvec4 result(double(0)); - do - { - result = compRand4(double(-1), double(1)); - } while (length(result) > double(1)); - - return result; -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 vecRand4( - T MinRadius, - T MaxRadius) -{ - assert(MinRadius <= MaxRadius); - - detail::tvec4 Result(T(0)); - T LenRadius(T(0)); - - do - { - Result = compRand4(-MaxRadius, MaxRadius); - LenRadius = length(Result); - } - while(LenRadius > MaxRadius || LenRadius < MinRadius); - - return Result; -} - -template -GLM_FUNC_QUALIFIER T gaussRand1( - T mean, - T std_deviation) -{ - T w, x1, x2; - - do - { - x1 = compRand1(T(-1), T(1)); - x2 = compRand1(T(-1), T(1)); - - w = x1 * x1 + x2 * x2; - } while(w > T(1)); - - return x2 * std_deviation * std_deviation * sqrt((T(-2) * log(w)) / w) + mean; -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2( - T mean, - T std_deviation) -{ - return detail::tvec2( - gaussRand1(mean, std_deviation), - gaussRand1(mean, std_deviation)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3( - T mean, - T std_deviation) -{ - return detail::tvec3( - gaussRand1(mean, std_deviation), - gaussRand1(mean, std_deviation), - gaussRand1(mean, std_deviation)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4( - T mean, - T std_deviation) -{ - return detail::tvec4( - gaussRand1(mean, std_deviation), - gaussRand1(mean, std_deviation), - gaussRand1(mean, std_deviation), - gaussRand1(mean, std_deviation)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2( - T mean, - const detail::tvec2& std_deviation) -{ - return detail::tvec2( - gaussRand1(mean, std_deviation.x), - gaussRand1(mean, std_deviation.y)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3( - T mean, - const detail::tvec3& std_deviation) -{ - return detail::tvec3( - gaussRand1(mean, std_deviation.x), - gaussRand1(mean, std_deviation.y), - gaussRand1(mean, std_deviation.z)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4( - T mean, - const detail::tvec4& std_deviation) -{ - return detail::tvec4( - gaussRand1(mean, std_deviation.x), - gaussRand1(mean, std_deviation.y), - gaussRand1(mean, std_deviation.z), - gaussRand1(mean, std_deviation.w)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2( - const detail::tvec2& mean, - T std_deviation) -{ - return detail::tvec2( - gaussRand1(mean.x, std_deviation), - gaussRand1(mean.y, std_deviation)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3( - const detail::tvec3& mean, - T std_deviation) -{ - return detail::tvec3( - gaussRand1(mean.x, std_deviation), - gaussRand1(mean.y, std_deviation), - gaussRand1(mean.z, std_deviation)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4( - const detail::tvec4& mean, - T std_deviation) -{ - return detail::tvec4( - gaussRand1(mean.x, std_deviation), - gaussRand1(mean.y, std_deviation), - gaussRand1(mean.z, std_deviation), - gaussRand1(mean.w, std_deviation)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec2 gaussRand2( - const detail::tvec2& mean, - const detail::tvec2& std_deviation) -{ - return detail::tvec2( - gaussRand1(mean.x, std_deviation.x), - gaussRand1(mean.y, std_deviation.y)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec3 gaussRand3( - const detail::tvec3& mean, - const detail::tvec3& std_deviation) -{ - return detail::tvec3( - gaussRand1(mean.x, std_deviation.x), - gaussRand1(mean.y, std_deviation.y), - gaussRand1(mean.z, std_deviation.z)); -} - -template -GLM_FUNC_QUALIFIER detail::tvec4 gaussRand4( - const detail::tvec4& mean, - const detail::tvec4& std_deviation) -{ - return detail::tvec4( - gaussRand1(mean.x, std_deviation.x), - gaussRand1(mean.y, std_deviation.y), - gaussRand1(mean.z, std_deviation.z), - gaussRand1(mean.w, std_deviation.w)); -} - -}//namespace glm