Your code looks reasonable and should work fine when translated to C.
Side note (just FYI): You are calculating the true heading, not the compass heading. A compass, whether magnetic or inertial (such as a gyroscope), will give you a different reading.
In the case of a magnetic compass, magnetic north and south are not aligned with the Earth's rotational north and south. Also, the magnetic north and south vary over time. The correction required depends on your location relative to the current magnetic north and south.
An inertial compass can be calibrated to the true heading, but accuracy decreases the further west or east of where the compass was calibrated. I don't remember how to calculate the correction.
(I learned about this back as a teen when I was a cadet in the Civil Air Patrol.)
In reply to Re: Calculate bearing between GPS coordinates
by RonW
in thread Calculate bearing between GPS coordinates
by stevieb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |