source: GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SampleGenerator.h @ 2902

Revision 2902, 1.6 KB checked in by mattausch, 16 years ago (diff)
Line 
1#ifndef __SAMPLEGENERATOR_H
2#define __SAMPLEGENERATOR_H
3
4#include "Halton.h"
5
6
7/** Class that generates samples on a circle
8*/
9
10struct Sample2
11{
12        Sample2() {}
13        Sample2(float _x, float _y): x(_x), y(_y) {}
14
15        float x;
16        float y;
17};
18
19
20struct Sample3
21{
22        Sample3() {}
23        Sample3(float _x, float _y, float _z): x(_x), y(_y), z(_z) {}
24
25        float x;
26        float y;
27        float z;
28};
29
30/** Class generating random samples on a disc or a sphere, respectively.
31*/
32class SampleGenerator
33{
34public:
35       
36        SampleGenerator(int numSamples, float radius);
37
38        virtual void Generate(float *samples) const = 0;
39
40protected:
41
42        SampleGenerator() {};
43
44        int mNumSamples;
45        float mRadius;
46};
47
48
49class PseudoRandomGenerator: public SampleGenerator
50{
51public:
52       
53        PseudoRandomGenerator(int numSamples, float radius);
54
55        virtual void Generate(float *samples) const;
56
57protected:
58
59        static HaltonSequence sHalton;
60};
61
62
63class PoissonDiscSampleGenerator: public SampleGenerator
64{
65public:
66       
67        PoissonDiscSampleGenerator(int numSamples, float radius);
68
69        virtual void Generate(float *samples) const;
70
71protected:
72
73        static HaltonSequence sHalton;
74};
75
76
77class GaussianSampleGenerator: public SampleGenerator
78{
79public:
80       
81        GaussianSampleGenerator(int numSamples, float radius);
82
83        virtual void Generate(float *samples) const;
84
85protected:
86
87        static HaltonSequence sHalton;
88};
89
90
91class SphericalSampleGenerator: public SampleGenerator
92{
93public:
94       
95        SphericalSampleGenerator(int numSamples, float radius);
96
97        virtual void Generate(float *samples) const;
98
99protected:
100
101        static HaltonSequence sHalton;
102};
103
104
105#endif
Note: See TracBrowser for help on using the repository browser.