CTL  0.6.1
Computed Tomography Library
viewgeometry.h
Go to the documentation of this file.
1 #ifndef CTL_VIEWGEOMETRY_H
2 #define CTL_VIEWGEOMETRY_H
3 
4 #include "mat/projectionmatrix.h"
5 #include <QVector>
6 
7 namespace CTL {
8 
22 {
23 public:
24  typedef QVector<mat::ProjectionMatrix>::iterator iterator;
25  typedef QVector<mat::ProjectionMatrix>::const_iterator const_iterator;
26 
27  SingleViewGeometry() = default;
28  explicit SingleViewGeometry(uint nbModules);
29  explicit SingleViewGeometry(QVector<mat::ProjectionMatrix>&& pMats);
30  explicit SingleViewGeometry(const QVector<mat::ProjectionMatrix>& pMats);
31 
32  void append(const mat::ProjectionMatrix& pMat);
33  void append(const QVector<mat::ProjectionMatrix>& pMats);
34  void append(const SingleViewGeometry& other);
35  const mat::ProjectionMatrix& at(uint i) const;
36  iterator begin();
37  const_iterator begin() const;
38  void clear();
39  std::vector<float> concatenatedStdVector() const;
40  iterator end();
41  const_iterator end() const;
42  const mat::ProjectionMatrix& first() const;
43  mat::ProjectionMatrix& first();
44  uint length() const;
45  const mat::ProjectionMatrix& module(uint i) const;
46  mat::ProjectionMatrix& module(uint i);
47  uint nbModules() const;
48  void reserve(uint nbModules);
49  uint size() const;
50 
51  const mat::ProjectionMatrix& operator[](uint i) const;
52  mat::ProjectionMatrix& operator[](uint i);
53 
54 private:
55  QVector<mat::ProjectionMatrix> _pMats;
56 };
57 
72 {
73 public:
74  typedef QVector<SingleViewGeometry>::iterator iterator;
75  typedef QVector<SingleViewGeometry>::const_iterator const_iterator;
76 
77  FullGeometry() = default;
78  explicit FullGeometry(uint nbViews);
79  explicit FullGeometry(QVector<SingleViewGeometry>&& pMats);
80  explicit FullGeometry(const QVector<SingleViewGeometry>& pMats);
81 
82  void append(const SingleViewGeometry& view);
83  void append(const QVector<SingleViewGeometry>& views);
84  void append(const FullGeometry& other);
85  const SingleViewGeometry& at(uint i) const;
86  iterator begin();
87  const_iterator begin() const;
88  void clear();
89  std::vector<float> concatenatedStdVector() const;
90  iterator end();
91  const_iterator end() const;
92  const SingleViewGeometry& first() const;
93  SingleViewGeometry& first();
94  uint length() const;
95  uint nbViews() const;
96  void reserve(uint nbViews);
97  uint size() const;
98  uint totalNbPmats() const;
99  const SingleViewGeometry& view(uint i) const;
100  SingleViewGeometry& view(uint i);
101 
102  const SingleViewGeometry& operator[](uint i) const;
103  SingleViewGeometry& operator[](uint i);
104 
105 private:
106  QVector<SingleViewGeometry> _viewGeos;
107 };
108 
109 } // namespace CTL
110 
112 
116 #endif // CTL_VIEWGEOMETRY_H
Specialized sub-class of Matrix<3, 4> to represent a projection matrix.
Definition: projectionmatrix.h:96
Holds a list of projection matrices corresponding to the detector modules of a single view.
Definition: viewgeometry.h:21
Holds a list of SingleViewGeometry instances to represent the acquisition geometry of a full CT scan.
Definition: viewgeometry.h:71
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6