TEST(rosToEigen, transform) { Eigen::Isometry3d transform1 = toEigen(makeTransform(makeVector3(0, 1.5, 2), makeQuaternion(1, 0, 0, 0))); Eigen::Isometry3d transform2 = toEigen(makeTransform(makeVector3(-1.5, -2.6, -3.7), makeQuaternion(0, 0, 0, 1))); Eigen::Vector3d const & p1 = transform1.translation(); Eigen::Vector3d const & p2 = transform2.translation(); Eigen::Quaterniond const & q1 = Eigen::Quaterniond{transform1.rotation()}; Eigen::Quaterniond const & q2 = Eigen::Quaterniond{transform2.rotation()}; ASSERT_NEAR(0.0, p1.x(), 1e-5); ASSERT_NEAR(1.5, p1.y(), 1e-5); ASSERT_NEAR(2.0, p1.z(), 1e-5); ASSERT_NEAR(-1.5, p2.x(), 1e-5); ASSERT_NEAR(-2.6, p2.y(), 1e-5); ASSERT_NEAR(-3.7, p2.z(), 1e-5); ASSERT_NEAR(1, q1.x(), 1e-5); ASSERT_NEAR(0, q1.y(), 1e-5); ASSERT_NEAR(0, q1.z(), 1e-5); ASSERT_NEAR(0, q1.w(), 1e-5); ASSERT_NEAR(0, q2.x(), 1e-5); ASSERT_NEAR(0, q2.y(), 1e-5); ASSERT_NEAR(0, q2.z(), 1e-5); ASSERT_NEAR(1, q2.w(), 1e-5); }
void IECoreAppleseed::TransformStack::concatTransform( const Imath::M44f &m ) { asf::Transformd xform; makeTransform( m, xform ); asr::TransformSequence seq; seq.set_transform( 0.0, xform ); m_stack.top() = seq * m_stack.top(); }
void IECoreAppleseed::TransformStack::setTransform( const Imath::M44f &m ) { asf::Transformd xform; makeTransform( m, xform ); m_stack.top().set_transform( 0.0, xform ); }
data::Value &Transform::transform(data::Value &value) const { Vector<data::Value *> stack; makeTransform(value, stack); return value; }