6 #include <LadLutLoader.h>
73 double x,
double y,
double z,
74 double ex,
double ey,
double ez
81 double u1[3] = {0.79259392, 0.22645541, 0.56613852};
83 double u2[3] = {-0.440759, 0.000000, 0.897626};
85 double u3[3] = {-0.36999991, 0.46129036, -0.80641879};
89 std::string llPath =
testDir +
"spherical.txt";
91 std::shared_ptr<LadLut> ladlut = loader.
load(llPath);
96 ladlut->transformToLadLutDomain(u1[0], u1[1], u1[2], wx, wy, wz);
101 double g = ladlut->interpolate(u1[0], u1[1], u1[2]);
102 if(fabs(g-g1) >
eps)
return false;
105 g = ladlut->interpolate(wx, wy, wz);
106 if(fabs(g-g1) >
eps)
return false;
109 g = ladlut->interpolate(u2[0], u2[1], u2[2]);
110 if(fabs(g-g2) >
eps)
return false;
113 g = ladlut->interpolate(u3[0], u3[1], u3[2]);
114 if(fabs(g-g3) >
eps)
return false;
123 size_t indices[4] = {0, 1, 498, 499};
124 double expectedX[4] = {
125 1.000000, 0.999921, 0.999921, 1.000000
127 double expectedY[4] = {
128 0.000000, 0.000000, 0.000000, 0.000000
130 double expectedZ[4] = {
131 0.000000, 0.012591, -0.012591, -0.000000
133 double expectedG[4] = {
134 0.500000, 0.500040, 0.500040, 0.500000
138 for(
size_t i = 0 ; i < 4 ; i++){
139 size_t idx = indices[i];
141 double diffX = ladlut.
X[idx] - expectedX[i];
142 double diffY = ladlut.
Y[idx] - expectedY[i];
143 double diffZ = ladlut.
Z[idx] - expectedZ[i];
144 double diffG = ladlut.
G[idx] - expectedG[i];
146 if(diffX < -eps || diffX >
eps)
return false;
147 if(diffY < -eps || diffY >
eps)
return false;
148 if(diffZ < -eps || diffZ >
eps)
return false;
149 if(diffG < -eps || diffG >
eps)
return false;
155 double x,
double y,
double z,
156 double ex,
double ey,
double ez
161 return xDiff > -
eps && xDiff <
eps &&
162 yDiff > -
eps && yDiff <
eps &&
163 zDiff > -
eps && zDiff <
eps;
BaseTest class.
Definition: BaseTest.h:20
Test look-up table for leaf angle distribution.
Definition: LadLutTest.h:15
double eps
Decimal precision for validation purposes.
Definition: LadLutTest.h:22
bool run() override
Definition: LadLutTest.h:79
std::string testDir
Where required test files are stored. For LadLutTest it is required that a file named spherical....
Definition: LadLutTest.h:28
bool validateLadLut(LadLut const &ladlut)
Validate given leaf angle distribution look-up table.
Definition: LadLutTest.h:121
bool validateTransformation(double x, double y, double z, double ex, double ey, double ez)
Validate a transformation.
Definition: LadLutTest.h:154
LadLutTest(std::string testDir="data/test/")
Leaf angle distribution look-up table test constructor.
Definition: LadLutTest.h:35
Loader for Leaf Angle Distribution Look Up Tables.
Definition: LadLutLoader.h:10
std::shared_ptr< LadLut > load(std::string const &path, std::string const separator=",")
Load LadLut from specified file.
Definition: LadLutLoader.cpp:8
Leaf Angle Distribution Look-Up Table.
Definition: LadLut.h:13
std::vector< double > Y
Y component of normalized director vector for each record.
Definition: LadLut.h:45
std::vector< double > G
Function evaluation for each record.
Definition: LadLut.h:53
std::vector< double > X
X component of normalized director vector for each record.
Definition: LadLut.h:41
std::vector< double > Z
Z component of normalized director vector for each record.
Definition: LadLut.h:49