注意:我正在使用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
这似乎很难!我知道我将不得不使用......
如果我要加或减来得到'完成'这个值,我也希望它返回 对于冗长的描述感到抱歉,我想你可能已经得到了....:/
答案 0 :(得分:2)
如果度数在0到360范围内,则可以跳过% 360
部分:
function FindLeastDegrees(s, f)
diff = math.abs(f-s) % 360 ;
return math.min( 360-diff, diff )
end