134得票9回答
为什么四元数被用于旋转?

我是一名物理学家,正在学习编程。我发现很多人在旋转中使用四元数,而不是矩阵/向量形式。然而,在物理学中,我们没有使用四元数的很好的理由(尽管有时会讲述关于Hamilton/Gibbs等的离奇故事)。物理要求我们的描述具有良好的解析行为,但四元数并不具备这种好的性质,所以它们不太实用。相反,矢量...

30得票11回答
在Java中旋转一个NxN矩阵

这是一个来自《Cracking the Coding Interview》的问题。解决方案表示程序先旋转外部边缘,然后旋转内部边缘。然而,我很难理解两个for循环的逻辑。有人能解释一下代码的逻辑吗(例如为什么要执行“layer < n/2”以及“左侧->上侧”和“底部->左侧”等四个步骤...

26得票4回答
从旋转矩阵中提取偏航角、俯仰角和横滚角。

我有一个传感器管理器,它根据设备的磁力计和加速度计返回一个rotationMatrix。我一直在尝试计算用户设备的偏航、俯仰和滚转角度,但发现俯仰和滚转会互相干扰,导致结果不准确。是否有一种方法可以从rotationMatrix中提取设备的偏航、俯仰和滚转角度? 编辑: 尝试解释下面 Bl...

23得票4回答
Three.js:在场景角落显示世界坐标轴

我想在相机的右下角像Maya一样显示箭头,表示世界坐标的方向(x、y、z),这样当围绕物体旋转相机或穿过场景移动时,仍然可以识别世界坐标的方向。 我已经尝试了两种不同的方法,但都没有成功。 我有一个对象,它有三个箭头作为子元素,使用THREE.ArrowHelper类创建,我们将其称为XYZ...

18得票3回答
将OpenCV的旋转和平移向量转换为XYZ旋转和XYZ位置

有一些谷歌搜索结果和stackoverflow帖子似乎回答了这个问题,但简单事实是我无法理解它们。无论我读多少遍,我都无法理解四元数、欧拉角、罗德里格斯变换以及所有这些内容。 有人能向我解释就像我12岁一样,如何从OpenCV的solvePnP()方法返回的旋转和平移向量转换为可以插入3D图...

17得票7回答
Eigen - 旋转矩阵的重正交化

通过乘以大量的旋转矩阵后,由于舍入误差(不正交化),最终结果可能不再是有效的旋转矩阵。 重新正交化的一种方法如下: 将旋转矩阵转换为轴-角度表示形式 (链接) 将轴-角度转换回旋转矩阵 (链接) Eigen库中是否存在隐藏所有细节并执行同样操作的功能?或者是否有更好的解决方案? 由...

13得票5回答
右转弯

我有一个问题,我有一堆长度,想从原点开始(假装我正朝着y轴正方向),向右转并沿着x轴正方向移动长度为length_i。此时我再右转,走过长度为length_i,重复n次。我可以这样做,但我认为有更有效率的方法来做,而我缺乏数学背景:## Fake Data set.seed(11) dat &...

12得票5回答
在3D空间中计算旋转矩阵以使两个向量对齐?

我有两个分离的三维数据点向量,表示曲线,并在matplotlib中将其作为散点数据绘制在3D图中。 这两个向量都从原点开始,并且长度都为单位长度。这些曲线彼此相似,但通常两条曲线之间存在旋转(为了测试目的,我实际上使用一条曲线并应用旋转矩阵来创建第二条曲线)。 我想要对齐这两条曲线,使它们...

12得票5回答
四元数与数值稳定性

我正在学习单位四元数以及如何使用它们表示和组合旋转。维基百科称它们比矩阵表示更具数值稳定性,但没有给出参考。有人可以向我解释一下(最好附上一些数学推理),为什么在处理旋转时(例如OpenGL应用程序),使用单位四元数比旋转矩阵更具数值稳定性?这只是因为避免万向节锁吗?

11得票2回答
使用Eigen库从旋转矩阵中获取滚转角、俯仰角和偏航角

我需要从旋转矩阵中提取滚转、俯仰和偏航角,并且我想确保我的操作是正确的。 Eigen::Matrix< simFloat, 3, 1> rpy = orientation.toRotationMatrix().eulerAngles(0,1,2); const dou...