LCOV - code coverage report
Current view: top level - elsa/generators - CircleTrajectoryGenerator.cpp (source / functions) Hit Total Coverage
Test: coverage-all.lcov Lines: 16 16 100.0 %
Date: 2024-05-16 04:22:26 Functions: 3 3 100.0 %

          Line data    Source code
       1             : #include "CircleTrajectoryGenerator.h"
       2             : #include "PlanarDetectorDescriptor.h"
       3             : 
       4             : #include <optional>
       5             : #include <vector>
       6             : 
       7             : namespace elsa
       8             : {
       9             :     std::unique_ptr<PlanarDetectorDescriptor> CircleTrajectoryGenerator::createTrajectory(
      10             :         index_t numberOfPoses, const DataDescriptor& volumeDescriptor, index_t arcDegrees,
      11             :         real_t sourceToCenter, real_t centerToDetector,
      12             :         std::optional<RealVector_t> principalPointOffset,
      13             :         std::optional<RealVector_t> centerOfRotOffset, std::optional<IndexVector_t> detectorSize,
      14             :         std::optional<RealVector_t> detectorSpacing)
      15          20 :     {
      16          20 :         auto thetas = [&]() {
      17          20 :             auto tmp = RealVector_t::LinSpaced(numberOfPoses, 0, static_cast<real_t>(arcDegrees));
      18          20 :             return std::vector<real_t>{tmp.begin(), tmp.end()};
      19          20 :         }();
      20             : 
      21          20 :         return trajectoryFromAngles(thetas, volumeDescriptor, sourceToCenter, centerToDetector,
      22          20 :                                     principalPointOffset, centerOfRotOffset, detectorSize,
      23          20 :                                     detectorSpacing);
      24          20 :     }
      25             : 
      26             :     std::unique_ptr<PlanarDetectorDescriptor> CircleTrajectoryGenerator::trajectoryFromAngles(
      27             :         const std::vector<real_t>& thetas, const DataDescriptor& volumeDescriptor,
      28             :         real_t sourceToCenter, real_t centerToDetector,
      29             :         std::optional<RealVector_t> principalPointOffset,
      30             :         std::optional<RealVector_t> centerOfRotOffset, std::optional<IndexVector_t> detectorSize,
      31             :         std::optional<RealVector_t> detectorSpacing)
      32          20 :     {
      33          20 :         auto [coeffs, spacing, geometryList] = BaseCircleTrajectoryGenerator::createTrajectoryData(
      34          20 :             thetas, volumeDescriptor, sourceToCenter, centerToDetector, principalPointOffset,
      35          20 :             centerOfRotOffset, detectorSize, detectorSpacing);
      36             : 
      37          20 :         return std::make_unique<PlanarDetectorDescriptor>(std::move(coeffs), std::move(spacing),
      38          20 :                                                           std::move(geometryList));
      39          20 :     }
      40             : } // namespace elsa

Generated by: LCOV version 1.14