CTL  0.6.1
Computed Tomography Library
datamodels2d.h
1 #ifndef CTL_DATAMODELS2D_H
2 #define CTL_DATAMODELS2D_H
3 
4 #include "abstractdatamodel2d.h"
5 
6 #include <memory>
7 #include <QRectF>
8 
9 namespace CTL {
10 
18 {
20 
21  // AbstractDataModel2D interface
22  public: float valueAt(float x, float y) const override;
23  public: AbstractDataModel2D* clone() const override;
24 
25 public:
26  explicit ConstantModel2D(float amplitude = 1.0f);
27 
28  QVariant parameter() const override;
29  void setParameter(const QVariant &parameter) override;
30  QVariant toVariant() const override;
31 
33 
34 private:
35  float _amplitude;
36 };
37 
45 {
47 
48  // AbstractDataModel2D interface
49  public:float valueAt(float x, float y) const override;
50  public:AbstractDataModel2D* clone() const override;
51 
52 public:
53  explicit GaussianModel2D(float amplitude = 1.0f, float mean = 0.0f, float std = 1.0f,
54  float correlation = 0.0f);
55  GaussianModel2D(float amplitude,
56  float meanX, float meanY,
57  float stdX, float stdY, float correlation = 0.0f);
58 
59  // SerializationInterface interface
60  QVariant toVariant() const override;
61  QVariant parameter() const override;
62  void setParameter(const QVariant& parameter) override;
63 
65 
66 private:
67  float _ampl = 1.0f;
68  float _meanX = 0.0f;
69  float _meanY = 0.0f;
70  float _stdX = 1.0f;
71  float _stdY = 1.0f;
72  float _corr = 0.0f;
73 
74  void setSaveCorr(float corr);
75  void setSaveStdX(float std);
76  void setSaveStdY(float std);
77 };
78 
88 {
90 
91  // AbstractDataModel2D interface
92  public: float valueAt(float x, float y) const override;
93  public: AbstractDataModel2D* clone() const override;
94 
95 public:
96  explicit RectModel2D(float amplitude = 1.0f, float xFrom = -0.5f, float xTo = 0.5f,
97  float yFrom = -0.5f, float yTo = 0.5f);
98  RectModel2D(float amplitude, const SamplingRange& xRange, const SamplingRange& yRange);
99  RectModel2D(float amplitude, const QRectF& rect);
100 
101  QVariant parameter() const override;
102  void setParameter(const QVariant &parameter) override;
103  QVariant toVariant() const override;
104 
106 
107 private:
108  float _amplitude;
109  QRectF _rect;
110 };
111 
122 {
124 
125  // AbstractDataModel2D interface
126  public: float valueAt(float x, float y) const override;
127  public: AbstractDataModel2D* clone() const override;
128 
129 public:
130  SeparableProductModel(std::shared_ptr<AbstractDataModel> xModel,
131  std::shared_ptr<AbstractDataModel> yModel);
132 
133  AbstractDataModel& xModel();
134  AbstractDataModel& yModel();
135 
136  QVariant parameter() const override;
137  void setParameter(const QVariant &parameter) override;
138  QVariant toVariant() const override;
139 
140 
141 private:
142  SeparableProductModel() = default;
143 
144  std::shared_ptr<AbstractDataModel> _xModel;
145  std::shared_ptr<AbstractDataModel> _yModel;
146 };
147 
148 
149 } // namespace CTL
150 
151 #endif // CTL_DATAMODELS2D_H
The AbstractDataModel2D class is the base class for two-dimensional data models.
Definition: abstractdatamodel2d.h:47
The RectModel2D class represents a two-dimensional rectangular (rect) function.
Definition: datamodels2d.h:87
The SeparableProductModel class represents the product of individual (1D) models in each dimension.
Definition: datamodels2d.h:121
The ConstantModel2D class represents a model that always returns a fixed value.
Definition: datamodels2d.h:17
float valueAt(float x, float y) const override
Always returns the constant specified for this instance.
Definition: datamodels2d.cpp:36
QVariant parameter() const override
Definition: datamodels2d.cpp:42
The AbstractDataModel class is the base class for basic data models.
Definition: abstractdatamodel.h:55
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
QVariant toVariant() const override
Definition: datamodels2d.cpp:61
void setParameter(const QVariant &parameter) override
Sets the parameters contained in parameter (a QVariantMap).
Definition: datamodels2d.cpp:52
The GaussianModel2D class represents a two-dimensional Gaussian curve.
Definition: datamodels2d.h:44