给定一个圆相对于它们的度数的两个点,它们之间的度数是多少?

时间:2012-04-19 23:05:19

标签: math lua trigonometry

注意:我正在使用Lua。

所以,我试图找出圆上两点之间的度数。问题出在340和20之间,正确的答案是40度,但是做了类似

的事情
function FindLeastDegrees(s, f) 
    return ((f - s+ 360) % 360) 
end 

print(FindLeastDegrees(60, 260))

-- S = Start, F = Finish (In degrees)

除了试图找出两者之间的距离时,所有情况都适用。以下代码是我下一次失败的尝试。

function FindLeastDegrees(s, f) 
    local x = 0 
    if math.abs(s-f) <= 180 then 
        x = math.abs(s-f) 
    else 
        x = math.abs(f-s)  
    end 
return x
end

print(FindLeastDegrees(60, 260))

然后我尝试了:

function FindLeastDegrees(s, f) 
    s = ((s % 360) >= 0) and (s % 360) or 360 - (s % 360); 
    f = ((f % 360) >= 0) and (f % 360) or 360 - (f % 360); 
    return math.abs(s - f) 
end 

print(FindLeastDegrees(60, 350))

--> 290 (Should be 70)

失败了。 :/

那么你如何找到两个其他度数之间的最短度数,然后你应该顺时针或逆时针(加或减)去到那里。我完全糊涂了。

我正在尝试做的几个例子......

FindLeastDegrees(60, 350)
--> 70

FindLeastDegrees(-360, 10)
--> 10

这似乎很难!我知道我将不得不使用......

  1. 模量
  2. 绝对值?
  3. 如果我要加或减来得到'完成'这个值,我也希望它返回 对于冗长的描述感到抱歉,我想你可能已经得到了....:/

1 个答案:

答案 0 :(得分:2)

如果度数在0到360范围内,则可以跳过% 360部分:

function FindLeastDegrees(s, f) 
    diff = math.abs(f-s) % 360 ;
    return math.min( 360-diff, diff ) 
end