我正试图从我的电脑控制某个方向的摇头摄像头。摄像机仅由平移(540度)和倾斜(280度)控制。问题是让欧拉角度达到这些平移和倾斜度。
我有一个方向的3d表示,让我们说X Y和Z旋转(欧拉角)。
现在我想将我的(物理!)云台相机向同一方向移动。但我无法弄清楚如何将xyz矢量转换为平移倾斜。
答案 0 :(得分:0)
切换到正交均匀4x4变换矩阵
围绕全球世界X轴旋转:
double c=cos(ang),s=sin(ang);
double Q[16]=
{
1, 0, 0, 0,
0, c,-s, 0,
0, s, c, 0,
0, 0, 0, 1
};
M=M*Q;
通过ang:
围绕局部相机X轴旋转double c=cos(ang),s=sin(ang);
double Q[16]=
{
1, 0, 0, 0,
0, c,-s, 0,
0, s, c, 0,
0, 0, 0, 1
};
M=((M^-1)*Q)^-1;
有像glm这样的变换矩阵的库,但我更喜欢我自己的
在这里你可以看到同质(4x4)和普通(3x3 + 1x3)三维变换矩阵之间的差异:
现在驾驶相机
因此,如果d单位执行此操作,则向前移动:
x0+=d*Zx;
y0+=d*Zy;
z0+=d*Zz;
侧移使用X vector
对于旋转不同,然后围绕X轴只使用不同的Q矩阵
围绕Y轴旋转
c, 0, s, 0,
0, 1, 0, 0,
-s, 0, c, 0,
0, 0, 0, 1;
围绕Z轴旋转
c,-s, 0, 0,
s, c, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1;