Ignore:
Timestamp:
02/26/09 18:39:04 (15 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SampleGenerator.cpp

    r3323 r3329  
    218218void QuadraticDiscSampleGenerator2D::Generate(float *samples) const 
    219219{ 
    220 #if 0 
    221         float r[2]; 
    222         Sample2 *s = (Sample2 *)samples; 
    223  
    224         for (int i = 0; i < mNumSamples; ++ i) 
    225         { 
    226                 mHalton->GetNext(r); 
    227  
    228                 // create samples over disc: the sample density 
    229                 // decreases quadratically with the distance to the origin 
    230                 s[i].x = mRadius * r[1] * sin(2.0f * M_PI * r[0]); 
    231                 s[i].y = mRadius * r[1] * cos(2.0f * M_PI * r[0]); 
    232         } 
    233 #else 
    234  
    235         //PoissonDiscSampleGenerator2D::Generate(samples); 
    236         RandomSampleGenerator2D::Generate(samples); 
    237  
    238         Sample2 *s = (Sample2 *)samples; 
    239  
    240         // multiply with lenght to get quadratic dependence on the distance 
    241         for (int i = 0; i < mNumSamples; ++ i) 
    242         { 
    243                 Sample2 &spl = s[i]; 
    244  
    245                 float len = sqrt(spl.x * spl.x + spl.y * spl.y); 
    246                 spl.x *= len * mRadius; 
    247                 spl.y *= len * mRadius; 
    248         } 
    249 #endif 
    250 } 
     220        Sample2 *s = (Sample2 *)samples; 
     221 
     222        int numSamples = 0; 
     223        float x[2]; 
     224 
     225        static float total1 = 0; 
     226        static float total2 = 0; 
     227        static int totalSamples = 0; 
     228 
     229        for (int i = 0; i < mNumSamples; ++ i) 
     230        { 
     231                //x[0] = RandomValue(0, 1); x[1] = RandomValue(0, 1); 
     232                mHalton->GetNext(x); 
     233                 
     234                const float a = 2.0f * M_PI * x[0]; 
     235                const float r = sqrt(x[1]); 
     236                //const float rad = mRadius * r * r * r * r; 
     237                const float rad = mRadius * r;// * r; 
     238 
     239                s[i].x = rad * cos(a); 
     240                s[i].y = rad * sin(a); 
     241        } 
     242} 
Note: See TracChangeset for help on using the changeset viewer.