Lua入门-获取两个三维向量之间的夹角

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

我有以下数值:

x1,y1,z1 = 1491,1560,11

x2,y2,z2 = 1491,1560,150

我参考了这个视频:https://www.youtube.com/watch?v=QWIZXRjMsp I

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

点赞
用户2858170
用户2858170

你可以使用 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 知识。一旦你学得更多,你可以编写自己的向量库或使用现有的向量库。

2019-03-25 21:35:23
用户4403144
用户4403144

如果您的问题是如何在 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 math 库对所有情况都有所帮助:

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
2019-03-25 21:52:53