TestComputeRotationMatrix.cpp
/**
* @file TestComputeRotationMatrix.cpp
* @date 2015-04-23
*
* \copyright
* Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*/
#include <gtest/gtest.h>
#include "GeoLib/AnalyticalGeometry.h"
auto test3equal = [](double a, double b, double c,
Eigen::Vector3d const& result) {
EXPECT_EQ(a, result[0]);
EXPECT_EQ(b, result[1]);
EXPECT_EQ(c, result[2]);
};
TEST(GeoLib, ComputeRotationMatrixToXYnegative)
{
Eigen::Vector3d const n({0.0, -1.0, 0.0});
Eigen::Matrix3d const rot_mat = GeoLib::computeRotationMatrixToXY(n);
EXPECT_EQ(1.0, rot_mat(0, 0));
EXPECT_EQ(0.0, rot_mat(0, 1));
EXPECT_EQ(0.0, rot_mat(0, 2));
EXPECT_EQ(0.0, rot_mat(1, 0));
EXPECT_EQ(0.0, rot_mat(1, 1));
EXPECT_EQ(1.0, rot_mat(1, 2));
EXPECT_EQ(0.0, rot_mat(2, 0));
EXPECT_EQ(-1.0, rot_mat(2, 1));
EXPECT_EQ(0.0, rot_mat(2, 2));
Eigen::Vector3d const x({0.0, 1.0, 0.0});
test3equal(0, 0, -1, rot_mat * x);
Eigen::Vector3d const x0({10.0, 1.0, 0.0});
test3equal(10, 0, -1, rot_mat * x0);
Eigen::Vector3d const x1({10.0, 0.0, 10.0});
test3equal(10, 10, 0, rot_mat * x1);
}
TEST(GeoLib, ComputeRotationMatrixToXYpositive)
{
Eigen::Vector3d const n{0.0, 1.0, 0.0};
Eigen::Matrix3d const rot_mat = GeoLib::computeRotationMatrixToXY(n);
EXPECT_EQ(1.0, rot_mat(0, 0));
EXPECT_EQ(0.0, rot_mat(0, 1));
EXPECT_EQ(0.0, rot_mat(0, 2));
EXPECT_EQ(0.0, rot_mat(1, 0));
EXPECT_EQ(0.0, rot_mat(1, 1));
EXPECT_EQ(-1.0, rot_mat(1, 2));
EXPECT_EQ(0.0, rot_mat(2, 0));
EXPECT_EQ(1.0, rot_mat(2, 1));
EXPECT_EQ(0.0, rot_mat(2, 2));
Eigen::Vector3d const x(0.0, 1.0, 0.0);
test3equal(0, 0, 1, rot_mat * x);
Eigen::Vector3d const x0(10.0, 1.0, 0.0);
test3equal(10, 0, 1, rot_mat * x0);
Eigen::Vector3d const x1(10.0, 0.0, 10.0);
test3equal(10, -10, 0, rot_mat * x1);
}