作为一种学习经历,我试图构建一个没有任何库的简单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