1

注意:我正在使用 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. 绝对值?

如果我应该添加或减去以获得值“完成”,我也希望它返回。
抱歉,描述太长了,我想你可能已经明白了....:/

4

1 回答 1

2

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

function FindLeastDegrees(s, f) 
    diff = math.abs(f-s) % 360 ;
    return math.min( 360-diff, diff ) 
end 
于 2012-04-19T23:11:47.487 回答