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

Revision 3313, 2.0 KB checked in by mattausch, 15 years ago (diff)

reverted back to before poisson sampling scheme

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
[3230]40        virtual ~SampleGenerator();
41
[2853]42protected:
43
44        SampleGenerator() {};
45
[3230]46        HaltonSequence *mHalton;
[2853]47        int mNumSamples;
48        float mRadius;
49};
50
51
[3227]52class RandomSampleGenerator2D: public SampleGenerator
[2902]53{
54public:
55       
[3227]56        RandomSampleGenerator2D(int numSamples, float radius);
[2902]57
58        virtual void Generate(float *samples) const;
59};
60
61
[2911]62/** This class generates random samples on a disc respecting
63        the poisson disc condition (all samples at least distance d apart)
64        according to some d related to the number of samples.
65*/
[3227]66class PoissonDiscSampleGenerator2D: public SampleGenerator
[2853]67{
68public:
[2886]69       
[3227]70        PoissonDiscSampleGenerator2D(int numSamples, float radius);
[2853]71
[2900]72        virtual void Generate(float *samples) const;
[2853]73};
74
[2930]75
76/** This class generates random samples on a disc
77        that have the property that their density decreases quadratically
78        with the distance
79*/
[3313]80//class QuadraticDiscSampleGenerator2D: public PoissonDiscSampleGenerator2D
81class QuadraticDiscSampleGenerator2D: public RandomSampleGenerator2D
[2930]82{
83public:
84       
[3227]85        QuadraticDiscSampleGenerator2D(int numSamples, float radius);
[2930]86
87        virtual void Generate(float *samples) const;
88};
89
90
[2911]91/** This class generates random spherical samples.
92*/
[3227]93class SphericalSampleGenerator3D: public SampleGenerator
[2899]94{
95public:
96       
[3227]97        SphericalSampleGenerator3D(int numSamples, float radius);
[2899]98
[2900]99        virtual void Generate(float *samples) const;
[2899]100};
101
102
[2853]103#endif
Note: See TracBrowser for help on using the repository browser.