Lua新手 - 获取两个3D矢量之间的角度[关闭]

问题描述 投票:1回答:2

我正在尝试计算抛出物体的角度,如何在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 |

math lua
2个回答
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

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。一旦你了解了一点,你就可以编写自己的小矢量库或使用现有的矢量库了。

© www.soinside.com 2019 - 2024. All rights reserved.