math - 查找从一个位置到另一位置的X/Y/Z旋转角度

标签 math 3d lua

我正在使用一个名为Electro的3D引擎,该引擎是使用Lua编程的。它不是一个很好的3D引擎,但是我没有其他选择。

无论如何,我正在尝试采用平坦的四边形并将其变换为特定的位置和方向。我确切知道它应该去的地方(即我知道拐角应该终止的确切顶点),但是我遇到了一个麻烦,无法将其旋转到正确的位置。

Electro不允许您应用变换矩阵。相反,您必须使用内置比例尺,位置(即平移)和旋转功能来变换模型。旋转功能需要一个对象和3个角度(以度为单位):

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

文档并没有特别说明,但是在浏览了Electro的源代码之后,我可以肯定地确定旋转是按X旋转-> Y旋转-> Z旋转的顺序进行的。

我的问题是这样的:如果我的起始对象是位于原点中心的XZ平面上的平坦四边形,并且目标位置位于已知目标顶点的其他位置和方向,那么我该如何使用Electro的旋转功能来旋转在将其移动到正确的位置之前将其定向到正确的方向?

我已经花了两天的时间试图弄清楚这一点,看着我不了解如何处理欧拉角的数学运算法则,但我仍然迷失了方向。谁能帮我吗?

最佳答案

您能告诉我们更多有关该问题的信息吗?用这种方式听起来很奇怪。您对要打的最终方向还有什么了解?它是完全任意的还是由用户指定的,或者您可以使用更多的知识来帮助解决问题吗?您还有其他可以使用的Electro API吗?

如果您真的必须解决这个普遍的问题,那就太糟糕了,这很困难而且没有明确说明。这是一些可能是work, from euclideanspace.com的家伙的代码。

关于math - 查找从一个位置到另一位置的X/Y/Z旋转角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776653/

相关文章:

java - 计算移动的球击中移动线的时间

3d - CGAL 网格体相交/碰撞

lua - 如何从lua中的字符串中删除点

algorithm - 如何解决武器目标分配变体

javascript - 从两个变量计算任务的紧迫性

java - 计算类(class)平均分

math - 如何从 3 个点和半径找到球心?

javascript - 3D 变换中的子元素定位不正确

delphi - 我可以在 Delphi 中使用自定义函数停止 Lua 脚本而不退出应用程序吗?

lua - 在lua中隐藏带星号的密码