使用Python pyquaternion.rotation_matrix函数在DirectX中实现

2024-10-02 18:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我把以前用Python编写的程序员的代码转换成DirectX,我在正确获取角度方向上遇到了一些问题。你知道吗

他们用来导入和合成旋转矩阵的python库是pyquaternionhttps://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个是ijk值。你知道吗

根据这个文档,FXMVECTOR结构应该有成员变量XYZW。但事实并非如此,因为它在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))

不用说,我所有的相机都定位错了位置。你知道吗

所以我的两个问题是:

  1. 用DirectX11中的{Real,I,J,K}表示法构造四元数的正确方法是什么

  2. 在DirectX中将四元数转换为旋转矩阵的正确方法是什么

谢谢你


Tags: 方法代码github元素矩阵方向程序员角度