- Timestamp:
- 02/26/09 18:39:04 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SampleGenerator.cpp
r3323 r3329 218 218 void QuadraticDiscSampleGenerator2D::Generate(float *samples) const 219 219 { 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.