
C ++********************************************************************
C                                                                      *
C  CANG         ADDED DOSS                         JUL 03 ARDEAN LEITH *
C                                                                      *
C **********************************************************************
C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM.   AUTHOR: J.FRANK  *
C=* Copyright (C) 1985-2005  Health Research Inc.                      *
C=*                                                                    *
C=* HEALTH RESEARCH INCORPORATED (HRI),                                *   
C=* ONE UNIVERSITY PLACE, RENSSELAER, NY 12144-3455.                   *
C=*                                                                    *
C=* Email:  spider@wadsworth.org                                       *
C=*                                                                    *
C=* This program is free software; you can redistribute it and/or      *
C=* modify it under the terms of the GNU General Public License as     *
C=* published by the Free Software Foundation; either version 2 of the *
C=* License, or (at your option) any later version.                    *
C=*                                                                    *
C=* This program is distributed in the hope that it will be useful,    *
C=* but WITHOUT ANY WARRANTY; without even the implied warranty of     *
C=* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
C=* General Public License for more details.                           *
C=*                                                                    *
C=* You should have received a copy of the GNU General Public License  *
C=* along with this program; if not, write to the                      *
C=* Free Software Foundation, Inc.,                                    *
C=* 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.      *
C=*                                                                    *
C **********************************************************************
C                                                                      *
C   CANG(PHI,THETA,PSI,DOSS,SS,DM)                                                                   *
C                                                                      *
C  PURPOSE:                                                            *
C                                                                      *
C  PARAMETERS:                                                         *
C                                                                      *
C23456789012345678901234567890123456789012345678901234567890123456789012
C***********************************************************************

        SUBROUTINE CANG(PHI,THETA,PSI,DOSS,SS,DM)

        DOUBLE PRECISION  CPHI,SPHI,CTHE,STHE,CPSI,SPSI
	DOUBLE PRECISION  QUADPI,DGR_TO_RAD
	PARAMETER (QUADPI = 3.141592653589793238462643383279502884197)
	PARAMETER (DGR_TO_RAD = (QUADPI/180))
        DIMENSION  DM(9),SS(6)
        LOGICAL   :: DOSS

        CPHI = DCOS(DBLE(PHI)*DGR_TO_RAD)
        SPHI = DSIN(DBLE(PHI)*DGR_TO_RAD)
        CTHE = DCOS(DBLE(THETA)*DGR_TO_RAD)
        STHE = DSIN(DBLE(THETA)*DGR_TO_RAD)
        CPSI = DCOS(DBLE(PSI)*DGR_TO_RAD)
        SPSI = DSIN(DBLE(PSI)*DGR_TO_RAD)

        IF (DOSS) THEN
C          WANT TO RETURN SS 
	   SS(1) = SNGL(CPHI)
	   SS(2) = SNGL(SPHI)
	   SS(3) = SNGL(CTHE)
	   SS(4) = SNGL(STHE)
	   SS(5) = SNGL(CPSI)
	   SS(6) = SNGL(SPSI)
        ENDIF

        DM(1) = CPHI*CTHE*CPSI-SPHI*SPSI
        DM(2) = SPHI*CTHE*CPSI+CPHI*SPSI
        DM(3) = -STHE*CPSI
        DM(4) = -CPHI*CTHE*SPSI-SPHI*CPSI
        DM(5) = -SPHI*CTHE*SPSI+CPHI*CPSI
        DM(6) = STHE*SPSI
        DM(7) = STHE*CPHI
        DM(8) = STHE*SPHI
        DM(9) = CTHE

        END
