Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 给定一个圆上相对于其度数的两点,它们之间的度数是多少?_Math_Lua_Trigonometry - Fatal编程技术网

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

Math 给定一个圆上相对于其度数的两点,它们之间的度数是多少?,math,lua,trigonometry,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) 它适用于所有情况,除了试图计算两者之间的距离。下面的代码是我下一次失败的尝试 fu

注意:我正在使用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))
所以这失败了/

那么你如何在另外两个度数之间找到最短的度数,然后是顺时针还是逆时针(加或减)到达那里呢。我完全糊涂了

我正在尝试做的一些例子

FindLeastDegrees(60, 350)
--> 70

FindLeastDegrees(-360, 10)
--> 10
这似乎很难!我知道我将不得不使用

  • 模数
  • 绝对值
  • 我还希望它返回我是否应该加或减以获得值“Finish”。

    抱歉,描述太长,我想你可能已经知道了/

    如果度数在0到360之间,则可以跳过
    %360
    部分:

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

    他们不是。但是,我可能会这样做:函数FindLeastDegrees(s,f)s=((s%360)>=0)和(s%360)或360-(s%360);f=((f%360)>=0)和(f%360)或360-(f%360);返回math.min(360 math.abs(f-s),math.abs(f-s))结束打印(FindLeastDegrees(60260)),额外的代码是获取度数的代码?啊。我知道你在那里做了什么!谢谢这是链接
    function FindLeastDegrees(s, f) 
        diff = math.abs(f-s) % 360 ;
        return math.min( 360-diff, diff ) 
    end