函数的反比是什么?
math.atan2我在Lua中使用这个,在这里我可以得到math.atan的逆math.tan。
但我在这里迷路了。
编辑
好的,让我给你更多的细节。
我需要计算两点之间的夹角(x1,y1)和(x2,y2),
local dy = y1-y2
local dx = x1-x2
local angle = atan2(dy,dx)* 180 / pi现在,如果我有这个角度,是否有可能回到dx和dx?
发布于 2012-07-09 12:29:39
仅给定角度,只能导出指向(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)给定angle (以度数为单位)和向量长度len,您可以通过以下方法导出dx和dy:
local theta = angle * pi / 180
local dx = len * cos(theta)
local dy = len * sin(theta)发布于 2012-07-09 12:11:03
显然,像这样的东西会有帮助:
x = cos(theta)
y = sin(theta) 简单的谷歌搜索就把这个问题提出来了,问这个问题的人说它解决了这个问题。
发布于 2014-03-31 03:56:05
如果您使用:
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您之所以要使用这个,是因为lua中的atan2会给出一个介于-180到180之间的数字。它将是正确的,直到你达到180,然后,因为它应该超过180 (即187),它将反转为一个负数,从-180下降到0,当你接近360。为了纠正这一点,我们检查是否角度小于0,如果是,我们添加360给我们正确的角度。
https://stackoverflow.com/questions/11394706
复制相似问题