79    const double PI              = 3.14159265358979323;
 
   81    const double PIDIV2          = PI / 2.0;
 
   82    const double TWOPI           = 2.0 * 
PI; 
 
   84    const double DEG_PER_RAD     = 180.0 / 
PI;
 
   85    const double RAD_PER_DEG     = PI / 180.0;
 
   87    const double SEMI_MAJOR_AXIS = 6378137.0;              
 
   88    const double FLATTENING      = 1.0 / 298.257223563;    
 
  113    char*   pathName = NULL;
 
  117    pathName = 
"/data/data/com.baesystems.msp.geotrans/lib/";
 
  121    pathName        = getenv( 
"MSPCCS_DATA" ); 
 
  123    if ( NULL == pathName )
 
  125       strcpy( pathName, 
"../../data" );
 
  128    length          = strlen( pathName );
 
  130    for (i = 0; i < length; i++) 
_gridFname += pathName[i];
 
  133       "/Und_min2.5x2.5_egm2008_WGS84_TideFree_reformatted";
 
  225    char*   pathName = NULL;
 
  229    pathName = 
"/data/data/com.baesystems.msp.geotrans/lib/";
 
  233    pathName        = getenv( 
"MSPCCS_DATA" ); 
 
  235    if ( NULL == pathName )
 
  237       strcpy( pathName, 
"../../data" );
 
  240    length          = strlen( pathName );
 
  242    for( i = 0; i < length; i++ ) 
_gridFname += pathName[ i ];
 
  305    _dLat             = oldGrid.
_dLat;
 
  306    _dLon             = oldGrid.
_dLon;
 
  349    if ( 
this == & oldGrid )                      
return ( *
this );
 
  424       if (( i < 0 ) || ( i >= 
_nGridRows ))                
return( 1 );
 
  436             ( -PIDIV2 - 
_dLat * double( i - LIMIT1 ));
 
  448       if (( i >= LIMIT1 ) && ( i <= LIMIT2 ))
 
  462             ( PIDIV2 - 
_dLat * double( i - LIMIT2 )); 
 
  474    catch ( ... ) {                                         
return( 1 ); }
 
  488    const double  posts[],                   
 
  589       const int  TWENTY = 20;
 
  601       if ( n < 3 )                                         
return( 1 );
 
  609       for (k = 2; k < n; k++) 
 
  611          p              = ( w[ k-2 ] / 2.0 ) + 2.0;
 
  615               ( posts[ k ] - ( 2.0 * posts[ k-1 ]) + 
 
  616                   posts[ k-2 ]) - ( moments[ k-2 ] / 2.0 )) / p;
 
  621       moments[ n-1 ] = 0.0;
 
  623       for (k = n - 1; k >= 2; k--) 
 
  625          moments[ k-1 ] += ( w[ k-1 ] * moments[ k ]);
 
  630    catch ( ... ) {                                         
return( 1 ); }
 
  645    const double  posts[],                   
 
  646    const double  moments[] )                
 
  699    const double  MIN_ABSCISSA = 0.0;
 
  713          "Error: Egm2008GeoidGrid::spline: not enough points");
 
  718       maxAbscissa = double( n - 1 );
 
  723       if ( x <= MIN_ABSCISSA )        
 
  727                ( x - MIN_ABSCISSA ) * 
 
  728                   ( posts[ 1 ] - posts[ 0 ] - 
 
  729                      ( moments[ 1 ] / 6.0 ));
 
  731       else if ( x >= maxAbscissa )    
 
  735               ( x - maxAbscissa ) *
 
  736                  ( posts[ n-1 ] - posts[ n-2 ] + 
 
  737                     ( moments[ n-2 ] / 6.0 ));
 
  741          j      = int( floor( x ));     
 
  743          dx     = x - double( j );
 
  745          mJp1   = moments[ j+1 ];
 
  749                dx * (( posts[ j+1 ] - posts[ j ] - 
 
  750                      ( mJ / 3.0 )   - ( mJp1 / 6.0 )) +
 
  752                dx * ( mJp1 - mJ ) / 6.0 ));
 
  760          "Error: Egm2008GeoidGrid::spline");
 
  796    char*  b = (
char *) buffer;
 
  798    for ( 
size_t c = 0; c < count; c ++ )
 
  800       for ( 
size_t s = 0; s < ( size / 2 ); s++ )
 
  802          temp = b[ c * size + s ];
 
  803          b[ c * size + s] = b[ c * size + size - s - 1 ];
 
  804          b[ c * size + size - s - 1] = temp;
 
  851           ( latitude >   maxLatitude ))                    
return( 1 );
 
  853       while ( longitude <   0.0 ) longitude += TWOPI;
 
  854       while ( longitude > TWOPI ) longitude -= TWOPI;
 
  864    catch ( ... ) {                                         
return( 1 ); }