/*  
 *  - - - - - - - - -  
 *   g a l _ f w 2 m  
 *  - - - - - - - - -  
 *  
 *  This routine is part of the General Astrodynamics Library  
 *  
 *  Description: 
 *  
 *  Form rotation matrix given the Fukushima-Williams angles.  
 *  
 *  This routine is an independent translation of a FORTRAN routine  
 *  that is part of IAU's SOFA software collection.  
 *  
 *  Status:
 *  
 *     support routine.  
 *  
 *  Given:
 *  
 *     gamb                d        F-W angle gamma_bar (radians)  
 *     phib                d        F-W angle phi_bar (radians)  
 *     psi                 d        F-W angle psi (radians)  
 *     eps                 d        F-W angle epsilon (radians)  
 *  
 *  Returned:
 *  
 *     r                d[3][3]     rotation matrix  
 *  
 *  Notes:  
 *  
 *  1) Naming the following points:  
 *  
 *           e = J2000 ecliptic pole,  
 *           p = GCRS pole,  
 *           E = ecliptic pole of date,  
 *     and   P = CIP,  
 *  
 *     the four Fukushima-Williams angles are as follows:  
 *  
 *        gamb = gamma = epE  
 *        phib = phi = pE  
 *        psi = psi = pEP  
 *        eps = epsilon = EP  
 *  
 *  2) The matrix representing the combined effects of frame bias,  
 *     precession and nutation is:  
 *  
 *        NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb)  
 *  
 *  3) Three different matrices can be constructed, depending on the  
 *     supplied angles:  
 *  
 *     o  To obtain the nutation x precession x frame bias matrix,  
 *        generate the four precession angles, generate the nutation  
 *        components and add them to the psi_bar and epsilon_A angles,  
 *        and call the present routine.  
 *  
 *     o  To obtain the precession x frame bias matrix, generate the  
 *        four precession angles and call the present routine.  
 *  
 *     o  To obtain the frame bias matrix, generate the four precession  
 *        angles for date J2000.0 and call the present routine.  
 *  
 *     The nutation-only and precession-only matrices can if necessary  
 *     be obtained by combining these three appropriately.  
 *  
 *  Called:
 *  
 *     gal_ir             initialize r-matrix to identity  
 *     gal_rz             rotate around Z-axis  
 *     gal_rx             rotate around X-axis  
 *  
 *  References:  
 *  
 *     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351  
 *  
 *  This revision:
 *  
 *      25 October 2006 ( c version 2008 January 19 )  
 *  
 *  
 *  Copyright (C) 2008 Paul C. L. Willmott. See notes at end.  
 *  
 *-----------------------------------------------------------------------  
 */  
  
#ifndef _GAL_FW2M_H_  
#define _GAL_FW2M_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  
  
void  
gal_fw2m  
 (  
    double gamb,  
    double phib,  
    double psi,  
    double eps,  
    double r[3][3]  
 ) ;  
  
__END_DECLS  
  
#endif /* !_GAL_FW2M_H_ */  

/*  
 *  gal - General Astrodynamics Library  
 *  Copyright (C) 2008 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  
 */  
