【问题标题】:Apply rotation to Eigen::Affine3f对 Eigen::Affine3f 应用旋转
【发布时间】:2016-01-20 08:46:59
【问题描述】:

我使用Eigen::Affine3f 来表示相机矩阵。 (我已经弄清楚如何从初始的“lookAt”和“up”向量设置视图矩阵/Affine3f

现在,我想支持更改相机的方向。简单的问题:对Affine3f 应用旋转的最佳方式是什么,即俯仰、偏航、滚动?

【问题讨论】:

  • 不清楚。您可以按照您想要的任何顺序执行此操作(但结果当然不会相同)。我认为没有“最好的方法”,取决于你的目标。
  • 好吧,忘记“最佳方式”。假设我已经知道要俯仰的轴和要俯仰的角度,如何将“俯仰”应用于 Affine3f?
  • 我对 Eigen 非常陌生,因此非常感谢任何关于如何将旋转累积到现有 Affine3f 的示例。

标签: c++ matrix eigen


【解决方案1】:

使用内置功能非常简单。您可以使用AxisAngle 对象来乘以现有的Affine3f。只需注意轴需要归一化:

Vector3f rotationAxis;
rotationAxis.setRandom(); // I don't really care, you determine the axis
rotationAxis.normalize(); // This is important, don't forget it

Affine3f randomAffine3f, rotatedAffine;
// Whatever was left in memory in my case,
// whatever your transformation is in yours
std::cout << randomAffine3f.matrix() << std::endl;

// We'll now apply a rotation of 0.256*M_PI around the rotationAxis
rotatedAffine = (AngleAxisf(0.256*M_PI, rotationAxis) * randomAffine3f);
std::cout << rotatedAffine.matrix() << std::endl;  // Ta dum!!

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多