0
Мой метод тестирования выглядит следующим образом:Эйген :: Affine3d Rotation Неожиданный результат
TEST_METHOD(RotationTest1)
{
std::stringstream log;
Eigen::Affine3d t(
Eigen::AngleAxisd(M_PI/4, Eigen::Vector3d::UnitZ())*
Eigen::AngleAxisd(M_PI/8, Eigen::Vector3d::UnitY())
);
log << "Expected:\n" << t.rotation();
Eigen::Affine3d act;
act = Eigen::AngleAxisd(M_PI/4, Eigen::Vector3d::UnitZ())*
Eigen::AngleAxisd(M_PI/8, Eigen::Vector3d::UnitY()) * act;
//act.prerotate(Eigen::AngleAxisd(M_PI/8, Eigen::Vector3d::UnitY()));
//act.prerotate(Eigen::AngleAxisd(M_PI/4, Eigen::Vector3d::UnitZ()));
log << "\nActual:\n" << act.rotation();
Logger::WriteMessage(log.str().c_str());
Assert::IsTrue(t.rotation().isApprox(act.rotation()));
}
Это произвело следующий противоречивый вывод:
Expected:
0.653281 -0.707107 0.270598
0.653281 0.707107 0.270598
-0.382683 0 0.92388
Actual:
-0.756394 0.645492 -0.10587
-0.324051 -0.510375 -0.79656
-0.568206 -0.568206 0.595217
Может кто-нибудь объяснить мне выше поведение, пожалуйста?
Или просто удалить экземпляр акта справа от цепи продукта. – ggael