处理360度范围的最佳方式

eng*_*ng3 5 c++ sql qt4

我需要在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)

这种方法似乎有点复杂.有更好的方法吗?

Ali*_*rad 0

将角度范围更改为 0-720。始终保持 minAngle < maxAngle。

if(最小值 > 最大值) 最大值 += 360;

最小角度 = 50 ,最大角度 = 200 ;=> 好的

最小角度 = 200,最大角度 = 50;=> 最小角度 = 200,最大角度 = 360+50 = 410;=> 好的

尽管这会增加你的复杂性。