forked from jwbuurlage/TPT
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathinitialization.cpp
94 lines (79 loc) · 2.2 KB
/
initialization.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "catch.hpp"
#include "tomos/tomos.hpp"
using T = float;
TEST_CASE("We can create reconstruction volumes", "[core]") {
SECTION("2D") {
int k = 16;
tomo::volume<2_D, T> v({k, k});
REQUIRE(v.cells() == k * k);
}
SECTION("3D") {
int k = 16;
tomo::volume<3_D, T> v({k, k, k});
REQUIRE(v.cells() == k * k * k);
}
SECTION("indexing") {
int k = 16;
tomo::volume<2_D, T> v2(k);
tomo::volume<3_D, T> v3(k);
CHECK(v2.index(2, 3) == 2 + 3 * k);
CHECK(v2.unroll(v2.index(2, 3))[0] == 2);
CHECK(v2.unroll(v2.index(2, 3))[1] == 3);
CHECK(v3.index(2, 3, 5) == 2 + 3 * k + 5 * k * k);
auto unrolled = v3.unroll(v3.index(2, 3, 5));
CHECK(unrolled[0] == 2);
CHECK(unrolled[1] == 3);
CHECK(unrolled[2] == 5);
}
}
/*
TEST_CASE("We can initialize geometry", "[core]") {
SECTION("2D") {
int k = 16;
auto v = tomo::volume<2_D, T>({k, k});
auto g = tomo::geometry::parallel<2_D, T>(v, 180);
auto lines = g.lines();
CHECK(lines == 180 * k);
int i = 0;
for ([[maybe_unused]] auto line : g) {
++i;
}
CHECK(i == lines);
}
SECTION("3D") {
int k = 16;
auto v = tomo::volume<3_D, T>({k, k, k});
auto g = tomo::geometry::parallel<3_D, T>(v, 180);
CHECK(g.lines() == 180 * k * k);
int i = 0;
for ([[maybe_unused]] auto line : g) {
++i;
}
CHECK(i == g.lines());
}
}
TEST_CASE("Geometry lines are not empty"){SECTION("3D"){int k = 16;
auto v = tomo::volume<3_D, T>({k, k, k});
auto g = tomo::geometry::parallel<3_D, T>(v, k);
auto proj = tomo::dim::closest<3_D, T>(v);
bool a_line_is_empty = false;
for (auto line : g) {
int i = 0;
for (auto elem : proj(line)) {
(void)elem; // suppress unused warning
++i;
}
if (i == 0) {
a_line_is_empty = true;
break;
}
}
CHECK(!a_line_is_empty);
}
}
TEST_CASE("We can use projectors", "[core]") {
// FIXME add test case where we check that for each line in any geometry,
// the origin lies inside the imaging volume
//
}
*/