Skip to content
Snippets Groups Projects
Commit 932f9e25 authored by Oliver Sander's avatar Oliver Sander Committed by sander@FU-BERLIN.DE
Browse files

Use the ValueFactory also to create Rotation<3,double> objects

[[Imported from SVN: r7309]]
parent 9b8832ff
No related branches found
No related tags found
No related merge requests found
......@@ -326,26 +326,19 @@ void testUnitVector()
void testRotation3d()
{
int nTestPoints = 10;
double testPoints[10][4] = {{1,0,0,0}, {0,1,0,0}, {-0.838114,0.356751,-0.412667,0.5},
{-0.490946,-0.306456,0.81551,0.23},{-0.944506,0.123687,-0.304319,-0.7},
{-0.6,0.1,-0.2,0.8},{0.45,0.12,0.517,0},
{-0.1,0.3,-0.1,0.73},{-0.444506,0.123687,0.104319,-0.23},{-0.7,-0.123687,-0.304319,0.72}};
std::vector<Rotation<3,double> > testPoints;
ValueFactory<Rotation<3,double> >::get(testPoints);
int nTestPoints = testPoints.size();
// Set up elements of SO(3)
for (int i=0; i<nTestPoints; i++) {
Dune::array<double,4> w0 = {{testPoints[i][0], testPoints[i][1], testPoints[i][2], testPoints[i][3]}};
Rotation<3,double> uv0(w0);
testOrthonormalFrame<Rotation<3,double>, 4>(uv0);
testOrthonormalFrame<Rotation<3,double>, 4>(testPoints[i]);
for (int j=0; j<nTestPoints; j++) {
Dune::array<double,4> w1 = {{testPoints[j][0], testPoints[j][1], testPoints[j][2], testPoints[i][3]}};
Rotation<3,double> uv1(w1);
testDerivativesOfSquaredDistance<Rotation<3,double>, 4>(uv0, uv1);
testDerivativesOfSquaredDistance<Rotation<3,double>, 4>(testPoints[i], testPoints[j]);
}
......
......@@ -77,4 +77,36 @@ public:
};
/** \brief A class that creates sets of values of various types, to be used in unit tests
*
* This is the specialization for Rotation<3>
*/
template <>
class ValueFactory<Rotation<3,double> >
{
public:
static void get(std::vector<Rotation<3,double> >& values) {
int nTestPoints = 10;
double testPoints[10][4] = {{1,0,0,0}, {0,1,0,0}, {-0.838114,0.356751,-0.412667,0.5},
{-0.490946,-0.306456,0.81551,0.23},{-0.944506,0.123687,-0.304319,-0.7},
{-0.6,0.1,-0.2,0.8},{0.45,0.12,0.517,0},
{-0.1,0.3,-0.1,0.73},{-0.444506,0.123687,0.104319,-0.23},{-0.7,-0.123687,-0.304319,0.72}};
values.resize(nTestPoints);
// Set up elements of S^1
for (int i=0; i<nTestPoints; i++) {
Dune::array<double,4> w = {{testPoints[i][0], testPoints[i][1], testPoints[i][2], testPoints[i][3]}};
values[i] = Rotation<3,double>(w);
}
}
};
#endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment