D3DXMatrixRotationYawPitchRoll()
函数构建一个具有指定偏航,俯仰和滚动的矩阵。是否有与iphone开发人员相同的功能?
我找到了一个漂亮的小样本项目,用于绘制蜿蜒的道路或过山车here.
这不是很多代码,评论看起来大部分都是可以理解的,但代码依赖于一些我还不够智能的DirectX函数,可以在C中重新创建,以便在我的iphone项目中使用。
有人能指出我在正确的方向吗?我需要根据偏航,俯仰,滚动值创建一个旋转矩阵。
这个directX函数签名是这样的:
D3DXMATRIX * D3DXMatrixRotationYawPitchRoll(
__inout D3DXMATRIX *pOut,
__in FLOAT Yaw,
__in FLOAT Pitch,
__in FLOAT Roll
);
是否有相应的glu *()?
(...稍后阅读时间)
好吧,经过相当多的阅读(还有更多内容),这就是我收集的内容:
This网站是一个很好的帮助!
似乎我需要将3个欧拉角(即俯仰,滚转,偏航的角度)转换为三个独立的单位四元数:
Qx = [ cos(a/2), (sin(a/2), 0, 0)]
Qy = [ cos(b/2), (0, sin(b/2), 0)]
Qz = [ cos(c/2), (0, 0, sin(c/2))]
然后将这些组合成一个四元数:
Qcombined = Qx * Qy * Qz
然后我可以将这个结果“单位”四元数转换回openGL会喜欢的那种旋转矩阵:
Matrix = [ 1 - 2y2 - 2z2 2xy - 2wz 2xz + 2wy
2xy + 2wz 1 - 2x2 - 2z2 2yz - 2wx
2xz - 2wy 2yz + 2wx 1 - 2x2 - 2y2 ]
答案 0 :(得分:0)
在这里查看:http://en.wikipedia.org/wiki/Rotation_matrix#Three_dimensions
你应该创建一个由Rz(-roll)* Rx(-pitch)* Ry(yaw)组成的矩阵, 然后使用结果调用glMultMatrix(如果你有列mayor矩阵)或glMultTransposeMatrix(如果你有行 - 矩阵矩阵)足以设置视图。 http://www.opengl.org/sdk/docs/man/xhtml/glMultTransposeMatrix.xml http://www.opengl.org/sdk/docs/man/xhtml/glMultMatrix.xml