source: GTP/trunk/Lib/Vis/Preprocessing/src/SamplingStrategy.h @ 1695

Revision 1695, 2.8 KB checked in by mattausch, 18 years ago (diff)
Line 
1#ifndef _SamplingStategy_H__
2#define _SamplingStategy_H__
3
4
5namespace GtpVisibilityPreprocessor {
6
7
8class Preprocessor;
9struct SimpleRay;
10
11/** This class generates a specific sampling strategy.
12*/
13class SamplingStrategy
14{
15 public:
16
17         /** Sample rays of particular type
18         */
19         enum
20         {
21                 OBJECT_BASED_DISTRIBUTION,
22                 DIRECTION_BASED_DISTRIBUTION,
23                 DIRECTION_BOX_BASED_DISTRIBUTION,
24                 SPATIAL_BOX_BASED_DISTRIBUTION,
25                 RSS_BASED_DISTRIBUTION,
26                 RSS_SILHOUETTE_BASED_DISTRIBUTION,
27                 VSS_BASED_DISTRIBUTION,
28                 OBJECT_DIRECTION_BASED_DISTRIBUTION,
29                 OBJECTS_INTERIOR_DISTRIBUTION,
30                 REVERSE_OBJECT_BASED_DISTRIBUTION
31         };
32
33         /** Default constructor
34     */
35         SamplingStrategy(const Preprocessor &preprocessor);
36
37         virtual ~SamplingStrategy();
38
39         /** Each strategy has to implement this function.
40                 @returns true if generated valid sample.
41         */
42         virtual bool GenerateSample(SimpleRay &ray) const = 0;
43
44protected:
45
46        const Preprocessor &mPreprocessor;
47
48};
49
50
51class ObjectBasedDistribution: public SamplingStrategy
52{
53 public:
54       
55         ObjectBasedDistribution(const Preprocessor &preprocessor):
56         SamplingStrategy(preprocessor) {}
57
58         virtual bool GenerateSample(SimpleRay &ray) const;
59};
60
61
62class ReverseObjectBasedDistribution: public SamplingStrategy
63{
64 public:
65       
66         ReverseObjectBasedDistribution(const Preprocessor &preprocessor):
67         SamplingStrategy(preprocessor) {}
68
69         virtual bool GenerateSample(SimpleRay &ray) const;
70};
71
72
73class ObjectDirectionBasedDistribution: public SamplingStrategy
74{
75 public:
76         ObjectDirectionBasedDistribution(const Preprocessor &preprocessor):
77         SamplingStrategy(preprocessor) {}
78        virtual bool GenerateSample(SimpleRay &ray) const;
79};
80
81
82class DirectionBasedDistribution: public SamplingStrategy
83{
84 public:
85        DirectionBasedDistribution(const Preprocessor &preprocessor):
86         SamplingStrategy(preprocessor) {}
87        virtual bool GenerateSample(SimpleRay &ray) const;
88};
89
90
91class DirectionBoxBasedDistribution: public SamplingStrategy
92{
93 public:
94         DirectionBoxBasedDistribution(const Preprocessor &preprocessor):
95           SamplingStrategy(preprocessor) {}
96           
97           virtual bool GenerateSample(SimpleRay &ray) const;
98};
99
100
101class SpatialBoxBasedDistribution: public SamplingStrategy
102{
103 public:
104         SpatialBoxBasedDistribution(const Preprocessor &preprocessor):
105         SamplingStrategy(preprocessor) {}
106         
107         virtual bool GenerateSample(SimpleRay &ray) const;
108};
109
110
111/** This strategy generates samples inside of the objects, e.g.,
112        for sampling the inside of a colon.
113*/
114/*class ObjectsInteriorDistribution: public SamplingStrategy
115{
116 public:
117         ObjectsInteriorDistribution(const Preprocessor &preprocessor):
118         SamplingStrategy(preprocessor) {}
119         
120         virtual bool GenerateSample(SimpleRay &ray) const;
121};
122*/
123};
124
125#endif
Note: See TracBrowser for help on using the repository browser.