【发布时间】:2015-06-24 09:49:40
【问题描述】:
我正在努力将 Razer Hydra 集成到我的项目中。集成并不困难,基本功能已经运行良好。 不过,我有一个问题,我自己无法解决。 是关于旋转的。问题是Sixense SDK空间和我的空间不一样。但唯一的区别是 Z 轴的符号。 在这里您可以在图片上看到它以便更好地理解:
现在我从每个 hydra 控制器中得到一个 3x3 的旋转矩阵。 但是要使用它,我必须将旋转矩阵转换为我的空间的旋转矩阵。我是这样做的:
float (*mat)[3];
mat = hydra.controllerRight.rot_mat;
float x1 = mat[0][0];
float x2 = mat[0][1];
float x3 = mat[0][2];
float x4 = 0;
float y1 = mat[1][0];
float y2 = mat[1][1];
float y3 = mat[1][2];
float y4 = 0;
float z1 = mat[2][0];
float z2 = mat[2][1];
float z3 = mat[2][2];
float z4 = 0;
float w1 = 0;
float w2 = 0;
float w3 = 0;
float w4 = 1;
// my 4x4 rotation matrix
MatrixF rotMat( x1, x2, x3, x4,
y1, y2, y3, y4,
z1, z2, z3, z4,
w1, w2, w3, w4 );
现在使用这个旋转矩阵的结果当然是错误的。但我不知道该怎么做才能解决它。我尝试了很多配置,首先是反转 z 值而不是转置矩阵,因为我不确定 Sixense 矩阵的结构。
有人可以帮帮我吗?
【问题讨论】:
标签: matrix graphics 3d rotation coordinate-systems