Lua的新手-获取两个3D向量之间的角度

时间:2019-03-25 20:26:24

标签: math lua

我正在尝试计算物体的角度,如何在Lua中应用公式。

我有这些值:

x1,y1,z1 = 1491,1560,11

x2,y2,z2 = 1491、1560、150

我基于以下视频:https://www.youtube.com/watch?v=QWIZXRjMspI

我正在尝试: 公式:cos(0)= a * b / | a || b |

2 个答案:

答案 0 :(得分:0)

使用Lua的算术运算符可以解决您的问题:

https://www.lua.org/manual/5.3/manual.html#3.4.1

以及Lua数学库提供的功能

https://www.lua.org/manual/5.3/manual.html#6.7

您所需要的只是一些非常基本的Lua。了解更多信息后,您就可以编写自己的小矢量库或使用现有的矢量库。

答案 1 :(得分:0)

如果您的问题是如何在Lua中编写此公式,则:

根据您的环境,您可能已经有一些内置数据类型可以提供帮助。例如,在Codea中,有预定义的vec3类型和相关方法(点,长度等)可以帮助您解决问题:

local a = vec3(4, -3, 5)
local b = vec3(9, 7, -10)

local ans = math.acos(a:dot(b) / (a:len() * b:len()))
print(math.deg(ans))

如果您使用的是纯Lua,则可以使用表格来表示3D向量,并为点积和大小编写自己的函数。 Lua数学库可在所有情况下提供帮助:

local c = {4, -3, 5}
local d = {9, 7, -10}

local ansAgain = math.acos(myDot(c, d) / (myMag(c) * myMag(d)))
print(math.deg(ansAgain))
function myDot(a, b)
    return (a[1] * b[1]) + (a[2] * b[2]) + (a[3] * b[3])
end

function myMag(a)
    return math.sqrt((a[1] * a[1]) + (a[2] * a[2]) + (a[3] * a[3]))
end