如何使用四元数相对于其方向旋转3D对象?

时间:2018-01-29 17:07:15

标签: javascript matrix rotation quaternions 3d-rendering

作为一种学习经历,我试图构建一个没有任何库的简单3D游戏。我已经设法找出渲染(大部分),并且我已经完成了4D矩阵变换。

我无法相对于自己的方向旋转我的播放器对象;我想构建一个类似拱廊的飞行模型,以便物体相对于其当前方向滚动,偏航和俯仰,而不是相对于世界空间。

一些文章指出四元数是比4D矩阵更好的旋转解决方案。经过一番阅读后,我以为我已经弄清楚了,但实际上我无法让这种方法发挥作用。我想我不正确地计算旋转轴,或者我完全以错误的方式将它们应用于四元数。

我不完全理解数学是如何工作的,因此我可能会有一些明显缺失的东西。我已经阅读了几篇关于这个主题的文章,并阅读了四元数学,直到我的大脑融化,所以任何帮助都会很棒!

以下是我的代码的相关部分,JSFiddle演示的链接,以及我在研究中发现最有帮助的两篇文章:

https://jsfiddle.net/peternatewood/guwd03et/

https://www.3dgep.com/understanding-quaternions/

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/

Str = Replace(Str, "T01 01", "T2001")
Str = StrReverse(Replace(StrReverse(Str), StrReverse("G00 Z.5"), StrReverse("G00 Z7.0"), , 1))

iFileNum = FreeFile
Open NewFileName For Output As iFileNum
Print #iFileNum, Str

0 个答案:

没有答案