从一个位置到另一个位置的旋转角度为X/Y/Z。

我正在使用一个名为 Electro 的 3D 引擎,它使用 Lua 编程。这不是一个非常好的 3D 引擎,但我在这方面没有任何选择。

无论如何,我正在尝试将一个平面四边形变换到特定的位置和方向。我知道它应该去哪里(即,我知道每个角落的确切顶点应该在哪里),但我的问题是如何将它旋转到正确的位置。

Electro 不允许您应用变换矩阵。相反,您必须使用内置的缩放、位置(即转换)和旋转函数来转换模型。旋转函数接受一个对象和 3 个角度(以度为单位):

E.set_entity_rotation(entity, xangle, yangle, zangle)

文档没有说明此事,但经过查看 Electro 的源代码,我相信旋转是按 X 旋转-> Y 旋转-> Z 旋转的顺序应用的。

我的问题是:如果我的起始对象是位于原点的 X-Z 平面上的平面四边形,目标位置位于不同的位置和方向,其中目标顶点已知,我该如何使用 Electro 的旋转函数在将其移动到正确位置之前将其旋转到正确的方向?

我已经用我不理解的欧拉角之类的数学思考了两天,但仍然感到困惑。有人可以帮帮我吗?

原文链接 https://stackoverflow.com/questions/1776653

点赞
stackoverflow用户37213
stackoverflow用户37213

首先进行翻译,将四边形的一个角调整到所需位置,然后依次应用三个旋转变换: 欧拉角

如果你知道四边形的位置,也确切地知道它需要移动到的位置,并且确定没有对四边形进行扭曲以使其适应所需位置,则应该能够使用向量标量积计算出角度。

如果有两个向量,则可以通过取点积来计算它们之间的角度。

2009-11-21 20:37:30
stackoverflow用户195963
stackoverflow用户195963

你能详细介绍一下这个问题吗?用这种方式表述很奇怪。你对要达到的最终方向还了解哪些?它是完全随意的还是由用户指定的?你能否利用更多的知识来解决这个问题?有没有其他的Electro API可以帮助你?

如果你真的必须解决这个一般性问题,那就太遗憾了,它很难,而且说明不充分。这里是某个人的代码,可能可以用EuclideanSpace.com

2009-11-21 22:16:29