Eigene Dateien/FlowVis/src/VWhiteNoise.h

Go to the documentation of this file.
00001 #pragma once
00002 
00003 #ifndef _v_white_noise_h
00004 #define _v_white_noise_h
00005 
00006 #include <vector>
00007 #include "randomc.h"
00008 
00009 
00010 template <class RG1, class RG2>
00011 class TRandomCombined : private RG1, private RG2 
00012 {
00013 public:
00014         TRandomCombined(int32 seed = 19) : RG1(seed), RG2(seed+1) 
00015         {
00016 
00017         };
00018 
00019         void RandomInit(int32 seed) 
00020         {        // re-seed
00021                 RG1::RandomInit(seed);
00022                 RG2::RandomInit(seed+1);
00023         }
00024 
00025         double Random() 
00026         {
00027                 long double r = RG1::Random() + RG2::Random();
00028                 if (r >= 1.) r -= 1.;
00029                 return r;
00030         }
00031 
00032         long IRandom(long min, long max)
00033         {       // output random integer
00034                 // get integer random number in desired interval
00035                 int iinterval = max - min + 1;
00036                 if (iinterval <= 0) return -1; // error
00037                 int i = int(iinterval * Random()); // truncate
00038                 if (i >= iinterval) i = iinterval-1;
00039                 return min + i;
00040         }
00041 };
00042 
00043 
00047 class VWhiteNoise
00048 {
00049 public:
00050 
00054         VWhiteNoise();
00055 
00059         ~VWhiteNoise();
00060 
00067         void generate( int m_Width, int m_Height, int m_Steps = 20 );
00068 
00074         void generateFrolicTexture ( int m_Width, int m_Height);
00075 
00080         unsigned int getTextureHandle()
00081         {
00082                 return mTextureHandle;
00083         }
00084 
00089         unsigned int getFrolicHandle()
00090         {
00091                 return mFrolicHandle;
00092         }
00093 
00094 private:
00095 
00099         void bindOpenGlTexture();
00100 
00104         void bindOpengGlFrolicTexture();
00105 
00111         float generateRandom( int m_Steps );
00112 
00113         TRandomCombined<CRandomMother, CRandomMersenne> mRandomNumberGenerator;         
00115         unsigned int mTextureHandle;            
00116         std::vector<float> mNoise;                      
00117         int mWidth;                                                     
00118         int mHeight;                                            
00121         unsigned int mFrolicHandle;                     
00122         std::vector<float> mFrolic;                     
00123         int mFWidth;                                                    
00124         int mFHeight;                                           
00125 };
00126 
00127 #endif // _v_white_noise_h

Generated on Mon Jan 21 01:15:16 2008 for FlowVis by  doxygen 1.5.4