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;
}
Post a Comment for "Finding The Closest Difference Between 2 Degrees Of A Compass - Javascript"