math - Lua 新手 - 获取两个 3D 矢量之间的角度
问题描述
我正在尝试计算抛出对象的角度,如何在 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|
解决方案
如果你的问题是,如何在 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
推荐阅读
- python - 我的脚本无法点击某个网格
- android - 我想知道如何获取选中的checkboxin android studio的信息
- elasticsearch - Elasticsearch 在大型索引中搜索大量字段
- android - 我应该如何从多个复选框选择中的 ArrayList 中删除未选择的元素?
- opencart - 修改控制器和目录控制器之间的区别
- wordpress - Wordpress 插件可了解访问者从哪个平台访问我的网站
- css - 由空白引起的引导引导滑块布局问题
- c# - 使用 ReadOnlySpan 处理转义序列
- mysql - 如何查看 MySQL 中列的 utf8mbf 排序规则?
- php - Laravel 自定义商店方法无法正常工作