Math 数学的倒数?

Math 数学的倒数?,math,lua,trigonometry,Math,Lua,Trigonometry,函数的倒数是什么 math.atan2 我在Lua中使用它,在那里我可以通过math.tan得到math.atan的倒数 但我在这里迷路了 编辑 好的,让我告诉你更多细节 我需要计算两个点(x1,y1)和(x2,y2)之间的角度,我做了 local dy = y1-y2 local dx = x1-x2 local angle = atan2(dy,dx)* 180 / pi 现在,如果我有角度,有可能得到dy和dx吗?显然,类似这样的东西会有帮助: x = cos(theta) y =

函数的倒数是什么

math.atan2
我在Lua中使用它,在那里我可以通过
math.tan
得到
math.atan
的倒数 但我在这里迷路了

编辑

好的,让我告诉你更多细节

我需要计算两个点(x1,y1)和(x2,y2)之间的角度,我做了

local dy = y1-y2 
local dx = x1-x2
local angle = atan2(dy,dx)* 180 / pi

现在,如果我有角度,有可能得到dy和dx吗?

显然,类似这样的东西会有帮助:

x = cos(theta)
y = sin(theta) 
简单的谷歌搜索抛出了这个问题,问这个问题的人说问题解决了。

根据:

返回y/x的反正切(以弧度为单位),但使用 这两个参数都用于查找结果的象限。(它还处理 正确地表示x为零的情况。)


所以我想你也可以用
math.tan
来反转它。

只要给定角度,你就只能导出一个指向
(dx,dy)
的单位向量。要获得原始的
(dx,dy)
还需要知道向量
(dx,dy)
,我将其称为
len
。您还必须将从度数导出的角度转换回弧度,然后使用本文其他地方提到的三角方程。那就是你有:

local dy = y1-y2
local dx = x1-x2
local angle = atan2(dy,dx) * 180 / pi
local len = sqrt(dx*dx + dy*dy)
给定
角度
(以度为单位)和向量长度
len
,可以通过以下方式导出
dx
dy

local theta = angle * pi / 180
local dx = len * cos(theta)
local dy = len * sin(theta)

如果使用以下选项,您可能会得到错误的号码:

local dy = y1-y2 
local dx = x1-x2
local angle = atan2(dy,dx) * 180 / pi
如果您使用的坐标系是y在屏幕下方变大,x在屏幕右侧变大,那么您应该使用:

local dy = y1 - y2
local dx = x2 - x1
local angle = math.deg(math.atan2(dy, dx))
if (angle < 0) then
  angle = 360 + angle
end
localdy=y1-y2
局部dx=x2-x1
局部角度=数学角度(数学角度2(dy,dx))
如果(角度<0),则
角度=360+角度
结束

之所以要使用它,是因为lua中的atan2将给您一个介于-180和180之间的数字。它将是正确的,直到你达到180,然后因为它应该超过180(即187),当你接近360时,它将反转为一个负数,从-180下降到0。为了纠正这一点,我们检查角度是否小于0,如果是,我们添加360以获得正确的角度。

是的,我也看到了。你知道关于我的问题(我已经更新了问题)的x和y值(由sin和cos计算)表明了什么吗?确保
theta
是弧度,OP给出的代码转换为度。在Lua中,你可以使用
math.deg
math.rad
在度和弧度之间转换。@lhf:谢谢。我从来没有在lua中做过任何事情,所以我认为这种方法是安全的。导入数学,后跟:θ=数学。弧度(角度)