00001
00002
00004
00005
00006
00007
00009
00010
00011
00012
00014
00015 #ifndef glm_gtx_random
00016 #define glm_gtx_random
00017
00018
00019 #include "../glm.hpp"
00020 #include "../gtc/half_float.hpp"
00021
00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00023 # pragma message("GLM: GLM_GTX_random extension included")
00024 #endif
00025
00026 namespace glm{
00027 namespace gtx{
00029 namespace random
00030 {
00033
00036 template <typename T> T signedRand1();
00037
00038 template <> float signedRand1();
00039 template <> double signedRand1();
00040 template <typename T> detail::tvec2<T> signedRand2();
00041 template <typename T> detail::tvec3<T> signedRand3();
00042 template <typename T> detail::tvec4<T> signedRand4();
00043
00044 template <typename T> detail::tvec2<T> normalizedRand2();
00045 template <typename T> detail::tvec2<T> normalizedRand2(T Min, T Max);
00046 template <typename T> detail::tvec3<T> normalizedRand3();
00047 template <typename T> detail::tvec3<T> normalizedRand3(T Min, T Max);
00048
00049 template <typename T> T compRand1();
00050 template <> float compRand1();
00051 template <> double compRand1();
00052 template <typename T> T compRand1(T Min, T Max);
00053 template <typename T> detail::tvec2<T> compRand2(T Min, T Max);
00054 template <typename T> detail::tvec3<T> compRand3(T Min, T Max);
00055 template <typename T> detail::tvec4<T> compRand4(T Min, T Max);
00056 template <typename T> detail::tvec2<T> compRand2(const detail::tvec2<T>& Min, const detail::tvec2<T>& Max);
00057 template <typename T> detail::tvec3<T> compRand3(const detail::tvec3<T>& Min, const detail::tvec3<T>& Max);
00058 template <typename T> detail::tvec3<T> compRand4(const detail::tvec4<T>& Min, const detail::tvec4<T>& Max);
00059
00060 template <typename T> detail::tvec2<T> vecRand2();
00061 template <typename T> detail::tvec2<T> vecRand2(T MinRadius, T MaxRadius);
00062 template <typename T> detail::tvec3<T> vecRand3();
00063 template <typename T> detail::tvec3<T> vecRand3(T MinRadius, T MaxRadius);
00064 template <typename T> detail::tvec4<T> vecRand4();
00065 template <typename T> detail::tvec4<T> vecRand4(T MinRadius, T MaxRadius);
00066
00067 template <typename T> T gaussRand1(T mean, T std_deviation);
00068 template <typename T> detail::tvec2<T> gaussRand2(T mean, T std_deviation);
00069 template <typename T> detail::tvec3<T> gaussRand3(T mean, T std_deviation);
00070 template <typename T> detail::tvec4<T> gaussRand4(T mean, T std_deviation);
00071 template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, T std_deviation);
00072 template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, T std_deviation);
00073 template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, T std_deviation);
00074 template <typename T> detail::tvec2<T> gaussRand2(T mean, const detail::tvec2<T>& std_deviation);
00075 template <typename T> detail::tvec3<T> gaussRand3(T mean, const detail::tvec3<T>& std_deviation);
00076 template <typename T> detail::tvec4<T> gaussRand4(T mean, const detail::tvec4<T>& std_deviation);
00077 template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, const detail::tvec2<T>& std_deviation);
00078 template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation);
00079 template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation);
00080
00082 }
00083 }
00084 }
00085
00086 #include "random.inl"
00087
00088 namespace glm{using namespace gtx::random;}
00089
00090 #endif//glm_gtx_random