random.hpp
00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2006-01-16
00005 // Updated : 2007-08-30
00006 // Licence : This source is under MIT License
00007 // File    : glm/gtx/random.hpp
00009 // Dependency:
00010 // - GLM core
00011 // - GLM_GTX_vecx
00012 // - GLM_GTX_half_float
00014 
00015 #ifndef glm_gtx_random
00016 #define glm_gtx_random
00017 
00018 // Dependency:
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{
00028 namespace random 
00029 {
00032 
00035     template <typename T> T signedRand1();
00036         
00037         template <> float signedRand1();                                                                                     
00038     template <> double signedRand1();                                                                                   
00039     template <typename T> detail::tvec2<T> signedRand2();                                                                           
00040     template <typename T> detail::tvec3<T> signedRand3();                                                                           
00041     template <typename T> detail::tvec4<T> signedRand4();                                                                           
00042     
00043         template <typename T> detail::tvec2<T> normalizedRand2();                                                                          
00044         template <typename T> detail::tvec2<T> normalizedRand2(T Min, T Max);                                                         
00045         template <typename T> detail::tvec3<T> normalizedRand3();                                                                          
00046         template <typename T> detail::tvec3<T> normalizedRand3(T Min, T Max);                                                        
00047 
00048     template <typename T> T compRand1();                                                                                       
00049         template <> float compRand1();                                                                                         
00050     template <> double compRand1();                                                                                      
00051     template <typename T> T compRand1(T Min, T Max);                                                                     
00052     template <typename T> detail::tvec2<T> compRand2(T Min, T Max);                                                              
00053     template <typename T> detail::tvec3<T> compRand3(T Min, T Max);                                                             
00054     template <typename T> detail::tvec4<T> compRand4(T Min, T Max);                                                              
00055     template <typename T> detail::tvec2<T> compRand2(const detail::tvec2<T>& Min, const detail::tvec2<T>& Max);                                
00056     template <typename T> detail::tvec3<T> compRand3(const detail::tvec3<T>& Min, const detail::tvec3<T>& Max);                                
00057     template <typename T> detail::tvec3<T> compRand4(const detail::tvec4<T>& Min, const detail::tvec4<T>& Max);                                
00058 
00059     template <typename T> detail::tvec2<T> vecRand2();                                                                                 
00060     template <typename T> detail::tvec2<T> vecRand2(T MinRadius, T MaxRadius);                                        
00061     template <typename T> detail::tvec3<T> vecRand3();                                                                                 
00062     template <typename T> detail::tvec3<T> vecRand3(T MinRadius, T MaxRadius);                                        
00063     template <typename T> detail::tvec4<T> vecRand4();                                                                                 
00064     template <typename T> detail::tvec4<T> vecRand4(T MinRadius, T MaxRadius);                                        
00065 
00066     template <typename T> T gaussRand1(T mean, T std_deviation);                                           
00067     template <typename T> detail::tvec2<T> gaussRand2(T mean, T std_deviation);                                   
00068     template <typename T> detail::tvec3<T> gaussRand3(T mean, T std_deviation);                                   
00069     template <typename T> detail::tvec4<T> gaussRand4(T mean, T std_deviation);                                   
00070     template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, T std_deviation);                    
00071     template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, T std_deviation);                    
00072     template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, T std_deviation);                    
00073     template <typename T> detail::tvec2<T> gaussRand2(T  mean, const detail::tvec2<T>& std_deviation);                   
00074     template <typename T> detail::tvec3<T> gaussRand3(T  mean, const detail::tvec3<T>& std_deviation);                   
00075     template <typename T> detail::tvec4<T> gaussRand4(T  mean, const detail::tvec4<T>& std_deviation);                   
00076     template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, const detail::tvec2<T>& std_deviation);     
00077     template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation);     
00078     template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation);     
00079 
00081 }//namespace random
00082 }//namespace gtx
00083 }//namespace glm
00084 
00085 #include "random.inl"
00086 
00087 namespace glm{using namespace gtx::random;}
00088 
00089 #endif//glm_gtx_random