我需要在SQL数据库中选择0到359.9度的范围.
我的输入是中心角和范围的形式.例如,center = 100 range = 50将给出一个角度> 75°<125的范围.但是,如果center = 0,则范围将是角度<25且角度> 335.
因此我的当前算法的工作方式如下:
minangle = center-range/2
maxangle = center+range/2
if minangle<0, then minangle += 360
if maxangle>0, then maxangle -=360
Run Code Online (Sandbox Code Playgroud)
然后在我的查询中
if minangle<maxangle, I query angle>minangle AND angle<maxangle
if minangle>maxangle, I query angle>minangle OR angle<maxangle
Run Code Online (Sandbox Code Playgroud)
这种方法似乎有点复杂.有更好的方法吗?
将角度范围更改为 0-720。始终保持 minAngle < maxAngle。
if(最小值 > 最大值) 最大值 += 360;
最小角度 = 50 ,最大角度 = 200 ;=> 好的
最小角度 = 200,最大角度 = 50;=> 最小角度 = 200,最大角度 = 360+50 = 410;=> 好的
尽管这会增加你的复杂性。