STIR  6.2.0
RigidObject3DMotion.h
Go to the documentation of this file.
1 //
2 //
3 /*
4  Copyright (C) 2003- 2010 , Hammersmith Imanet Ltd
5  For internal GE use only
6 */
7 #ifndef __stir_motion_RigidObject3DMotion__H__
8 #define __stir_motion_RigidObject3DMotion__H__
9 
19 #include "stir/RegisteredObject.h"
20 #include "stir/ParsingObject.h"
21 #include <vector>
22 #include <ctime>
23 
24 START_NAMESPACE_STIR
25 
26 class AbsTimeInterval;
27 
46 class RigidObject3DMotion : public RegisteredObject<RigidObject3DMotion>
47 {
48 
49 public:
50  ~RigidObject3DMotion() override {}
51 
53  virtual RigidObject3DTransformation get_motion_in_tracker_coords_rel_time(const double time) const = 0;
54 
56  virtual RigidObject3DTransformation get_motion_in_scanner_coords_rel_time(const double time) const;
57 
59 
60  virtual RigidObject3DTransformation compute_average_motion_in_tracker_coords(const AbsTimeInterval&) const;
61 
62  virtual RigidObject3DTransformation compute_average_motion_in_scanner_coords(const AbsTimeInterval&) const;
63 
64  virtual RigidObject3DTransformation compute_average_motion_in_tracker_coords_rel_time(const double start_time,
65  const double end_time) const = 0;
66 
67  virtual RigidObject3DTransformation compute_average_motion_in_scanner_coords_rel_time(const double start_time,
68  const double end_time) const;
69 
71 
73 
81  virtual std::vector<double> get_rel_time_of_samples(const double start_time, const double end_time) const = 0;
82 
84 
86  virtual Succeeded synchronise() = 0;
87 
88  virtual double secs_since_1970_to_rel_time(std::time_t) const = 0;
89 
90 protected:
91 #if 0
92  void
94  set_time_offset(const double time_offset);
95  double
96  get_time_offset() const;
97 #endif
98  virtual bool is_synchronised() const = 0;
100 
101 public:
102  virtual const RigidObject3DTransformation& get_transformation_to_scanner_coords() const = 0;
103  virtual const RigidObject3DTransformation& get_transformation_from_scanner_coords() const = 0;
104 
105  virtual void set_transformation_from_scanner_coords(const RigidObject3DTransformation&) = 0;
106 
107 protected:
108  void set_defaults() override;
109  void initialise_keymap() override;
110  bool post_processing() override;
111 };
112 
113 END_NAMESPACE_STIR
114 
115 #endif
Declaration of class stir::ParsingObject.
Base class for specifying a time interval (in absolute time)
Definition: AbsTimeInterval.h:31
Class to perform rigid object transformations in 3 dimensions.
Definition: RigidObject3DTransformation.h:64
Declaration of class stiir::RegisteredObject.
Helper class to provide registry mechanisms to a Base classSuppose you have a hierarchy of classes wi...
Definition: RegisteredObject.h:95
Base class for 3D rigid motion.
Definition: RigidObject3DMotion.h:46
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
Declaration of class stir::RigidObject3DTransformation.