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

Revision 3227, 2.0 KB checked in by mattausch, 16 years ago (diff)

worked on sampling / convergence

RevLine 
[2853]1#ifndef __SAMPLEGENERATOR_H
2#define __SAMPLEGENERATOR_H
3
[2901]4#include "Halton.h"
[2853]5
[2901]6
[2853]7/** Class that generates samples on a circle
8*/
9
10struct Sample2
11{
[2886]12        Sample2() {}
13        Sample2(float _x, float _y): x(_x), y(_y) {}
14
[2853]15        float x;
16        float y;
17};
18
19
[2900]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
[2911]30/** Class generating random samples on a disc or in a sphere, respectively.
[2900]31*/
[2853]32class SampleGenerator
33{
34public:
35       
36        SampleGenerator(int numSamples, float radius);
37
[2900]38        virtual void Generate(float *samples) const = 0;
[2853]39
40protected:
41
42        SampleGenerator() {};
43
44        int mNumSamples;
45        float mRadius;
46};
47
48
[3227]49class RandomSampleGenerator2D: public SampleGenerator
[2902]50{
51public:
52       
[3227]53        RandomSampleGenerator2D(int numSamples, float radius);
[2902]54
55        virtual void Generate(float *samples) const;
56
57protected:
58
59        static HaltonSequence sHalton;
60};
61
62
[2911]63/** This class generates random samples on a disc respecting
64        the poisson disc condition (all samples at least distance d apart)
65        according to some d related to the number of samples.
66*/
[3227]67class PoissonDiscSampleGenerator2D: public SampleGenerator
[2853]68{
69public:
[2886]70       
[3227]71        PoissonDiscSampleGenerator2D(int numSamples, float radius);
[2853]72
[2900]73        virtual void Generate(float *samples) const;
[2901]74
75protected:
76
77        static HaltonSequence sHalton;
[2853]78};
79
[2930]80
81/** This class generates random samples on a disc
82        that have the property that their density decreases quadratically
83        with the distance
84*/
[3227]85class QuadraticDiscSampleGenerator2D: public SampleGenerator
[2930]86{
87public:
88       
[3227]89        QuadraticDiscSampleGenerator2D(int numSamples, float radius);
[2930]90
91        virtual void Generate(float *samples) const;
92
93protected:
94
95        static HaltonSequence sHalton;
96};
97
98
[2911]99/** This class generates random spherical samples.
100*/
[3227]101class SphericalSampleGenerator3D: public SampleGenerator
[2899]102{
103public:
104       
[3227]105        SphericalSampleGenerator3D(int numSamples, float radius);
[2899]106
[2900]107        virtual void Generate(float *samples) const;
[2899]108};
109
110
[2853]111#endif
Note: See TracBrowser for help on using the repository browser.