The best way to handle 360 ​​degrees

I need to select a range from 0 to 359.9 degrees in an SQL database.

My in put is in the form of a central angle and range. For example, center = 100 range = 50 would give me an angle range> 75 of angle <125. However, if center = 0, then the range would be angle <25 and angle> 335.

So my current algorithm works as follows:

minangle = center-range/2 maxangle = center+range/2 if minangle<0, then minangle += 360 if maxangle>0, then maxangle -=360 

Then in my request

 if minangle<maxangle, I query angle>minangle AND angle<maxangle if minangle>maxangle, I query angle>minangle OR angle<maxangle 

This approach seems a bit confusing. Is there a better approach?

+5
source share
1 answer

Change the angle range to 0-720. Always keep minAngle <maxAngle.

if (min> max) max + = 360;

minAngle = 50, maxAngle = 200; => ok

minAngle = 200, maxAngle = 50; => minAngle = 200, maxAngle = 360 + 50 = 410; => ok

although it increases your complexity.

0
source

Source: https://habr.com/ru/post/1207343/


All Articles