/*  
 *  - - - - - - - - - - -
 *   g a l _ i l l u m  
 *  - - - - - - - - - - -
 *  
 *  This routine is part of the General Astrodynamics Library  
 *  
 *  Description: 
 *  
 *     This routine calculates the degree of the Sun's occultation
 *     by a body like a planet or moon of a satellite.  
 *  
 *  Status:
 *  
 *     support routine.  
 *  
 *  Given:
 *  
 *     rsu                 d        Radius of the Sun's disc ( meters )
 *     rb                  d        Radius of the occulting body ( meters )
 *     psu                d[3]      Sun's position vector ( meters )
 *     pb                 d[3]      Position vector of occulting body ( meters )
 *     ps                 d[3]      Position vector of satellite ( meters )
 *  
 *  Returned:
 *  
 *     *illum              d        Degree of Occulation ( 0 to 1 )
 *                                  0 = the satellite is in umbra
 *                                  1 = the satellite is in sunlight
 *                                  0 < v < 1 the satellite is in penumbra
 *     gal_illum           i        0 = No occulation
 *                                  1 = Partial occulation
 *                                  2 = Total occulation
 *  
 *  Called:
 *
 *     gal_pdp             Dot product of two p-vectors
 *     gal_pm              Modulus of p-vector
 *     gal_pmp             Subtract p-vector from p-vector
 *
 *  References:
 *
 *     Satellite Orbits
 *     Oliver Montenbruck, Eberhard Gill
 *     Springer 2005
 *     Pages 81-83
 *
 *  This revision:
 *  
 *     2009 January 3   
 *  
 *  Copyright (C) 2009 Paul C. L. Willmott. See notes at end.  
 *  
 *-----------------------------------------------------------------------  
 */  
  
#ifndef _GAL_ILLUM_H_  
#define _GAL_ILLUM_H_ 1  

#undef __BEGIN_DECLS  
#undef __END_DECLS  
#ifdef __cplusplus  
#define __BEGIN_DECLS extern "C" {  
#define __END_DECLS }  
#else  
#define __BEGIN_DECLS /* empty */  
#define __END_DECLS   /* empty */  
#endif
  
__BEGIN_DECLS  
  
int
gal_illum  
 ( 
   double rsu,
   double rb,
   double psu[3],
   double pb[3],
   double ps[3],
   double *illum
 ) ;  
  
__END_DECLS  
  
#endif /* !_GAL_ILLUM_H_ */  

/*  
 *  gal - General Astrodynamics Library  
 *  Copyright (C) 2009 Paul C. L. Willmott  
 *  
 *  This program is free software; you can redistribute it and/or modify  
 *  it under the terms of the GNU General Public License as published by  
 *  the Free Software Foundation; either version 2 of the License, or  
 *  (at your option) any later version.  
 *  
 *  This program is distributed in the hope that it will be useful,  
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of  
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 *  GNU General Public License for more details.  
 *  
 *  You should have received a copy of the GNU General Public License along  
 *  with this program; if not, write to the Free Software Foundation, Inc.,  
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.  
 *  
 *  Contact:  
 *  
 *  Paul Willmott  
 *  vp9mu@amsat.org  
 */  
