Skip to content Skip to sidebar Skip to footer

Finding The Closest Difference Between 2 Degrees Of A Compass - Javascript

I'm basically trying to find how many degrees apart two points of a compass are. For example if a person is facing 270 and their compass is 280 there are 10 degrees between those

Solution 1:

function GetHeadingDiff(_Heading1, _Heading2)
{   
    return (_Heading2-_Heading1+540) % 360 - 180;
}

Examples:

GetHeadingDiff( 280, 270 )
-10
GetHeadingDiff( 270, 280 )
10
GetHeadingDiff( 350, 20 )
30
GetHeadingDiff( 20, 350 )
-30

Solution 2:

first of, why are you doing back and forth conversion of radians and degrees? look at this. http://jsfiddle.net/dTmPn/5/

var diff = _Heading2-_Heading1;
if(diff>180) diff-=360;
if(diff<-180) diff+=360;
return diff;

is that enough?


Solution 3:

im not sure how you expect it to work, (which it doesnt i tried 10-30 and got 19.999996) but this would be the general idea based on your code.

sum1 = ConvertToDegrees((ConvertToRadians(_Heading2) - ConvertToRadians(_Heading1)));
sum2 = ConvertToDegrees((ConvertToRadians(_Heading1) - ConvertToRadians(_Heading2)));

return sum1 < sum2 ? sum1 : sum2;

this does you calculation twice in opposite directions and returns the smaller sum.

i would do it like this:

function GetHeadingDiff(s1, s2)
{  
    r1 = (s1 - s2 + 360 ) % 360;
    r2 = (s2 - s1 + 360 ) % 360;

    return r1<r2?r1:r2;
}

fiddle


Post a Comment for "Finding The Closest Difference Between 2 Degrees Of A Compass - Javascript"