本文整理汇总了C++中Transformation::eulerAngles方法的典型用法代码示例。如果您正苦于以下问题:C++ Transformation::eulerAngles方法的具体用法?C++ Transformation::eulerAngles怎么用?C++ Transformation::eulerAngles使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transformation
的用法示例。
在下文中一共展示了Transformation::eulerAngles方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: aimAt
bool GlareSensor_Impl::aimAt(const Point3d& target)
{
Point3d position = this->position();
Vector3d vector = target - position;
if (!vector.normalize()){
return false;
}
Vector3d yAxis(0,1,0);
Vector3d rotationAxis = yAxis.cross(vector);
if (!rotationAxis.normalize()){
return false;
}
double angle = getAngle(yAxis, vector);
Transformation transformation = Transformation::rotation(rotationAxis, angle);
EulerAngles eulerAngles = transformation.eulerAngles();
this->setPsiRotationAroundXAxis(eulerAngles.psi());
this->setThetaRotationAroundYAxis(eulerAngles.theta());
this->setPhiRotationAroundZAxis(eulerAngles.phi());
return true;
}
示例2: degToRad
TEST_F(GeometryFixture, Transformation_Decompose)
{
Transformation translation = Transformation::translation(Vector3d(1, 0, 0));
Transformation rotation = Transformation::rotation(Vector3d(0,0,1), degToRad(-90));
Transformation transformation = translation*rotation;
Vector3d origin = transformation.translation();
EulerAngles angles = transformation.eulerAngles();
Transformation test = Transformation::translation(origin)*Transformation::rotation(angles);
EXPECT_TRUE(transformation.matrix() == test.matrix()) << transformation.matrix() << std::endl << test.matrix();
transformation = rotation*translation;
origin = transformation.translation();
angles = transformation.eulerAngles();
test = Transformation::translation(origin)*Transformation::rotation(angles);
EXPECT_TRUE(transformation.matrix() == test.matrix()) << transformation.matrix() << std::endl << test.matrix();
}
示例3: matrix
TEST_F(GeometryFixture, EulerAngles)
{
Transformation transformation;
EulerAngles angles = transformation.eulerAngles();
EXPECT_EQ(0.0, angles.psi());
EXPECT_EQ(0.0, angles.theta());
EXPECT_EQ(0.0, angles.phi());
angles = EulerAngles(0,0,0);
transformation = Transformation::rotation(angles);
Matrix rotationMatrix = transformation.rotationMatrix();
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size1());
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size2());
EXPECT_EQ(1.0, rotationMatrix(0,0));
EXPECT_EQ(0.0, rotationMatrix(0,1));
EXPECT_EQ(0.0, rotationMatrix(0,2));
EXPECT_EQ(0.0, rotationMatrix(1,0));
EXPECT_EQ(1.0, rotationMatrix(1,1));
EXPECT_EQ(0.0, rotationMatrix(1,2));
EXPECT_EQ(0.0, rotationMatrix(2,0));
EXPECT_EQ(0.0, rotationMatrix(2,1));
EXPECT_EQ(1.0, rotationMatrix(2,2));
transformation = Transformation::translation(Vector3d(1,1,1));
angles = transformation.eulerAngles();
EXPECT_EQ(0.0, angles.psi());
EXPECT_EQ(0.0, angles.theta());
EXPECT_EQ(0.0, angles.phi());
transformation = Transformation::rotation(Vector3d(1,0,0), 1.0);
angles = transformation.eulerAngles();
EXPECT_EQ(1.0, angles.psi());
EXPECT_EQ(0.0, angles.theta());
EXPECT_EQ(0.0, angles.phi());
angles = EulerAngles(1,0,0);
transformation = Transformation::rotation(angles);
rotationMatrix = transformation.rotationMatrix();
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size1());
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size2());
EXPECT_NEAR(1.0, rotationMatrix(0,0), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(0,1), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(0,2), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(1,0), 0.0001);
EXPECT_NEAR(cos(1.0), rotationMatrix(1,1), 0.0001);
EXPECT_NEAR(-sin(1.0), rotationMatrix(1,2), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(2,0), 0.0001);
EXPECT_NEAR(sin(1.0), rotationMatrix(2,1), 0.0001);
EXPECT_NEAR(cos(1.0), rotationMatrix(2,2), 0.0001);
transformation = Transformation::rotation(Vector3d(0,1,0), 1.0);
angles = transformation.eulerAngles();
EXPECT_EQ(0.0, angles.psi());
EXPECT_EQ(1.0, angles.theta());
EXPECT_EQ(0.0, angles.phi());
angles = EulerAngles(0,1,0);
transformation = Transformation::rotation(angles);
rotationMatrix = transformation.rotationMatrix();
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size1());
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size2());
EXPECT_NEAR(cos(1.0), rotationMatrix(0,0), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(0,1), 0.0001);
EXPECT_NEAR(sin(1.0), rotationMatrix(0,2), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(1,0), 0.0001);
EXPECT_NEAR(1.0, rotationMatrix(1,1), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(1,2), 0.0001);
EXPECT_NEAR(-sin(1.0), rotationMatrix(2,0), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(2,1), 0.0001);
EXPECT_NEAR(cos(1.0), rotationMatrix(2,2), 0.0001);
transformation = Transformation::rotation(Vector3d(0,0,1), 1.0);
angles = transformation.eulerAngles();
EXPECT_EQ(0.0, angles.psi());
EXPECT_EQ(0.0, angles.theta());
EXPECT_EQ(1.0, angles.phi());
angles = EulerAngles(0,0,1);
transformation = Transformation::rotation(angles);
rotationMatrix = transformation.rotationMatrix();
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size1());
ASSERT_EQ(static_cast<unsigned>(3), rotationMatrix.size2());
EXPECT_NEAR(cos(1.0), rotationMatrix(0,0), 0.0001);
EXPECT_NEAR(-sin(1.0), rotationMatrix(0,1), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(0,2), 0.0001);
EXPECT_NEAR(sin(1.0), rotationMatrix(1,0), 0.0001);
EXPECT_NEAR(cos(1.0), rotationMatrix(1,1), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(1,2), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(2,0), 0.0001);
EXPECT_NEAR(0.0, rotationMatrix(2,1), 0.0001);
EXPECT_NEAR(1.0, rotationMatrix(2,2), 0.0001);
Matrix matrix(4,4);
matrix(0,0) = 0.5;
matrix(0,1) = -0.1464;
matrix(0,2) = 0.8536;
matrix(1,0) = 0.5;
matrix(1,1) = 0.8536;
matrix(1,2) = -0.1464;
matrix(2,0) = -0.7071;
//.........这里部分代码省略.........