23 #ifndef SIRF_GEOMETRICAL_INFO_TYPE
24 #define SIRF_GEOMETRICAL_INFO_TYPE
31 template <
int num_physical_dimensions,
int num_index_dimensions>
34 typedef std::array<float, num_physical_dimensions> Coordinate;
35 typedef std::array<unsigned int, num_index_dimensions> Index;
44 virtual std::string get_info()
const = 0;
48 template <
int num_dimensions>
56 typedef typename BaseType::Coordinate Coordinate;
57 typedef typename BaseType::Index Index;
81 typedef std::array<std::array<float, num_dimensions+1>, num_dimensions+1>
93 const float eps = 0.01F;
94 const float delta = 0.1F;
96 near_(_offset, vgi.get_offset(), eps) &&
97 near_(_spacing, vgi.get_spacing(), eps) &&
98 _size == vgi.get_size() &&
99 near_(_direction, vgi.get_direction(), delta);
101 virtual bool operator!=(
const GeometricalInfo<num_dimensions, num_dimensions>& gi)
const
103 const VoxelisedGeometricalInfo& vgi = (
const VoxelisedGeometricalInfo&)gi;
104 return !(*
this == vgi);
106 const Offset get_offset()
const;
107 const Spacing get_spacing()
const;
108 const Size get_size()
const;
111 const TransformMatrix calculate_index_to_physical_point_matrix()
const;
115 virtual std::string get_info()
const;
122 static bool near_(
const Coordinate& x,
const Coordinate& y,
float eps)
125 for (
int i = 0; i < num_dimensions; i++) {
128 t = std::max(t, std::abs(xi - yi));
135 for (
int i = 0; i < num_dimensions; i++) {
136 for (
int j = 0; j < num_dimensions; j++) {
139 t = std::max(t, std::abs(xij - yij));
146 typedef GeometricalInfo<3, 3> GeometricalInfo3D;
147 typedef VoxelisedGeometricalInfo<3> VoxelisedGeometricalInfo3D;
Definition: GeometricalInfo.h:32
virtual void print_info() const =0
Print info.
Definition: GeometricalInfo.h:50
virtual void print_info() const
Print info.
Definition: GeometricalInfo.cpp:31
std::array< Coordinate, num_dimensions > DirectionMatrix
Definition: GeometricalInfo.h:76
Index Size
Definition: GeometricalInfo.h:71
std::array< std::array< float, num_dimensions+1 >, num_dimensions+1 > TransformMatrix
Definition: GeometricalInfo.h:82
Coordinate Offset
Definition: GeometricalInfo.h:63
Coordinate Spacing
Definition: GeometricalInfo.h:67
Abstract data container.
Definition: GeometricalInfo.cpp:141