我把以前用Python编写的程序员的代码转换成DirectX,我在正确获取角度方向上遇到了一些问题。你知道吗
他们用来导入和合成旋转矩阵的python库是pyquaternion
https://github.com/KieranWynn/pyquaternion/blob/master/pyquaternion/quaternion.py
这是python代码的一个片段:
q = Quaternion(quaternion)
R = q.rotation_matrix
<>我的C++代码是:QQ0…qu3是四元数的元素FXMVECTOR v_quaternion= XMLoadFloat4(&XMFLOAT4(q_0, q_1, q_2, q_3))
viewMatrix = XMMatrixRotationQuaternion(v_quaternion);
我不精通python,但我从库中了解到,pyquaternion
中的第一个元素是实数,另外3个是i
、j
和k
值。你知道吗
根据这个文档,FXMVECTOR
结构应该有成员变量X
、Y
、Z
和W
。但事实并非如此,因为它在DirectXmath.h中被typedef
定义为XMVECTOR
,而且我不知道为了构造它,我需要输入四元数元素的顺序。你知道吗
我都试过了
FXMVECTOR v_quaternion= XMLoadFloat4(&XMFLOAT4(q_0, q_1, q_2, q_3))
和
FXMVECTOR v_quaternion= XMLoadFloat4(&XMFLOAT4(q_3, q_0, q_1, q_2))
不用说,我所有的相机都定位错了位置。你知道吗
所以我的两个问题是:
用DirectX11中的{Real,I,J,K}表示法构造四元数的正确方法是什么
在DirectX中将四元数转换为旋转矩阵的正确方法是什么
谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐