Simpact Cyan
Population based event driven simulation using mNRM
discretedistribution2d.h
1 #ifndef DISCRETEDISTRIBUTION2D_H
2 
3 #define DISCRETEDISTRIBUTION2D_H
4 
6 #include "discretedistribution.h"
7 #include "discretedistributionfast.h"
8 #include "polygon2d.h"
9 #include <vector>
10 
11 class TIFFDensityFile;
12 
13 //#define OLDTEST
14 
15 class DiscreteDistribution2D : public ProbabilityDistribution2D
16 {
17 public:
18  DiscreteDistribution2D(double xOffset, double yOffset, double xSize, double ySize,
19  const TIFFDensityFile &density, GslRandomNumberGenerator *pRngGen,
20  const Polygon2D &filter = Polygon2D()
21  );
22  ~DiscreteDistribution2D();
23 
24  Point2D pickPoint() const;
25 
26  double getXOffset() const { return m_xOffset; }
27  double getYOffset() const { return m_yOffset; }
28  double getXSize() const { return m_xSize; }
29  double getYSize() const { return m_ySize; }
30 private:
31 #ifdef OLDTEST
32  DiscreteDistribution *m_pMarginalYDist;
33  std::vector<DiscreteDistribution *> m_conditionalXDists;
34 #else
35  DiscreteDistributionFast *m_pMarginalYDist;
36  std::vector<DiscreteDistributionFast *> m_conditionalXDists;
37 #endif
38  double m_xOffset, m_yOffset;
39  double m_xSize, m_ySize;
40  int m_width, m_height; // discrete size (pixels)
41 };
42 
43 #endif // DISCRETEDISTRIBUTION2D_H
virtual Point2D pickPoint() const =0
Pick a point according to a specific distrubution, specified in a subclass of ProbabilityDistribution...
Helper class to generate random numbers based on some kind of discrete distribution.
Definition: discretedistribution.h:20
This class allows you to generate random numbers, and uses the GNU Scientific Library for this...
Definition: gslrandomnumbergenerator.h:16
Abstract base class for 2D probability distribution implementations so that they can be used intercha...
Definition: probabilitydistribution2d.h:16
This class can be used to represent a polygon.
Definition: polygon2d.h:10