# How to get the height according to EGM96 for a point?

For a program I have to calculate the height according to EGM96. I found http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html - this site delivers files with parameters and a fortran-program. But I feel unable to understand what is going on in this Fortran-program and have no idea how to use the parameters to generate the correct height. Can someone explain the algorithm to me?

-
Which Fortran program? The one that interpolates values on a grid (intpt.f) or the one that sums spherical harmonics (f477.f)? – whuber Oct 14 '11 at 16:56
I don't even get, which one calculate the heights for me. – Mnementh Oct 18 '11 at 7:53
They both do, but they do it in (completely) different ways. – whuber Oct 18 '11 at 13:48

GeographicLib includes classes to compute the geoid height via interpolation on a grid of values (the Geoid class) and via summing the spherical harmonic sum (the GravityModel class). The interpolation method is pretty straightforward; see the associated documentation, Geoid height. I agree that the NGA programs for computing the geoid height via spherical harmonics are poorly documented. I've tried to explain the method on the documentation page, Gravity models. More to the point, I'm happy to answer questions. (I've had no luck getting NGA to answer questions about its programs!)

-

Pardon if I'm cross-posting a link from Stack Overflow. I asked a similar question on Stack Overflow with regards how to do the calculations for an IOS application. I actually ended up answering my own question but I've posted a link here which gives you both C and Objective C code to complete this task.

Somebody ported a Fortran program to do these calculations into C and I then ported it over to Objective C

-

Here is a C# library for calculating geoid EGM96 undulations: https://github.com/MatejFranceskin/GeoidHeightsDotNet

Available also as Nuget packet: GeoidHeightsDotNet

-