Line data Source code
1 : #pragma once 2 : 3 : #include "DetectorDescriptor.h" 4 : #include "TypeCasts.hpp" 5 : #include "elsaDefines.h" 6 : 7 : namespace elsa 8 : { 9 : /** 10 : * @brief Class representing metadata for lineraized n-dimensional signal stored in memory. It 11 : * specifically describes signals, which were captured by a planar detector and stores 12 : * additional information such as different poses 13 : * 14 : * @author David Frank - initial code 15 : */ 16 : class PlanarDetectorDescriptor : public DetectorDescriptor 17 : { 18 : public: 19 : PlanarDetectorDescriptor() = delete; 20 : 21 4293 : ~PlanarDetectorDescriptor() = default; 22 : 23 : /** 24 : * @brief Construct a PlanatDetectorDescriptor with given number of coefficients and spacing 25 : * per dimension and a list of geometry poses in the trajectory 26 : */ 27 : PlanarDetectorDescriptor(const IndexVector_t& numOfCoeffsPerDim, 28 : const RealVector_t& spacingPerDim, 29 : const std::vector<Geometry>& geometryList); 30 : 31 : /** 32 : * @brief Construct a PlanatDetectorDescriptor with given number of coefficients 33 : * per dimension and a list of geometry poses in the trajectory 34 : */ 35 : PlanarDetectorDescriptor(const IndexVector_t& numOfCoeffsPerDim, 36 : const std::vector<Geometry>& geometryList); 37 : 38 : using DetectorDescriptor::computeRayFromDetectorCoord; 39 : 40 : /// Override function to compute rays for a planar detector 41 : RealRay_t computeRayFromDetectorCoord(const RealVector_t& detectorCoord, 42 : const index_t poseIndex) const override; 43 : 44 : RealVector_t computeDetectorCoordFromRay(const RealRay_t& ray, 45 : const index_t poseIndex) const override; 46 : 47 : private: 48 : PlanarDetectorDescriptor* cloneImpl() const override; 49 : 50 : bool isEqual(const DataDescriptor& other) const override; 51 : }; 52 : } // namespace elsa