C++*********************************************************************
C
C VOEA.F              USED REG_SET_NSEL  AUG 00 ARDEAN LEITH
C
C **********************************************************************
C=*                                                                    *
C=* This file is part of:   SPIDER - Modular Image Processing System.  *
C=* SPIDER System Authors:  Joachim Frank & ArDean Leith               *
C=* Copyright 1985-2011  Health Research Inc.,                         *
C=* Riverview Center, 150 Broadway, Suite 560, Menands, NY 12204.      *
C=* Email: spider@wadsworth.org                                        *
C=*                                                                    *
C=* SPIDER 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=* SPIDER 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=* You should have received a copy of the GNU General Public License  *
C=* along with this program. If not, see <http://www.gnu.org/licenses> *
C=*                                                                    *
C **********************************************************************
C
C  PREPARE ANG DOC FILE FOR PJ 3Q (QUASI-EQUAL ANGULAR SPACING) 04/23/92
C  MODIFIED ON 10/23/96 TO GET EVEN SPACING IN PHI.
C
C
C23456789012345678901234567890123456789012345678901234567890123456789012
C--*********************************************************************

         SUBROUTINE VOEA(IDUM)

         INCLUDE 'CMBLOCK.INC'

         REAL               :: FIO(4)
         EQUIVALENCE        (FIO(2),PSI),(FIO(3),THETA),(FIO(4),PHI)

	 LOGICAL            :: SKIP
	 REAL, PARAMETER    :: QUADPI = 3.14159265358979323846
	 REAL, PARAMETER    :: DGR_TO_RAD = (QUADPI/180)

         INTEGER, PARAMETER :: NDOUT = 56

         CALL SET_MPI(ICOMM,MYPID,MPIERR) ! SETS ICOMM AND MYPID

         PSI = 0.0

         DELTA = 15.0
         CALL  RDPRM1S(DELTA,NOT_USED,'DELTA THETA',IRTFLG)
         IF (IRTFLG .NE. 0) RETURN

         T1 = 0
         T2 = 90
         CALL RDPRM2S(T1,T2,NOT_USED,'RANGE OF THETA (0,90)',IRTFLG)
         IF (IRTFLG .NE. 0) RETURN

         P1 = 0.0
         P2 = 359.9
         CALL  RDPRM2S(P1,P2,NOT_USED,'RANGE OF PHI (0,359.9)',IRTFLG)
         IF (IRTFLG .NE. 0) RETURN

         IF (T1.EQ.0.0 .AND. T2.EQ.0.0 .OR. T1.GE.T2) THEN
            T1 = 0.0
            T2 = 90.0
         ENDIF
         IF (P1.EQ.0.0 .AND. P2.EQ.0.0 .OR. P1.GE.P2) THEN
            P1 = 0.0
            P2 = 359.9
         ENDIF

         SKIP  = T1 .LT.  90.0 .AND.
     &           T2 .EQ.  90.0 .AND.
     &           P1 .EQ.   0.0 .AND.
     &           P2 .GT. 180.0

         LITER = 0
         NLIST = 4

C        do   theta=0.,90.0,delta
         DO THETA=T1,T2,DELTA
            IF (THETA.EQ.0.0 .OR. THETA.EQ. 180.0)  THEN
		DETPHI = 360.0
		LT     = 1
            ELSE
		DETPHI = DELTA/SIN(THETA*DGR_TO_RAD)
		LT     = MAX0(INT((P2-P1)/DETPHI)-1,1)
		DETPHI = (P2-P1)/LT
            ENDIF

C           do     phi=0.,359.9,detphi
C           DO     PHI=P1,P2,DETPHI
	    DO I=1,LT
	       PHI = P1+(I-1) * DETPHI
	       IF (SKIP .AND. THETA.EQ.90.0 .AND. PHI.GE.180.0) CYCLE
               LITER  = LITER + 1
               FIO(1) = LITER

               CALL SAVD(NDOUT,FIO,NLIST,IRTFLG)
               IF (IRTFLG .EQ. -1) GOTO  5
            ENDDO
         ENDDO

5        CALL  SAVDC

         IF (MYPID .LE. 0) THEN
            WRITE(NOUT,33)  LITER
33          FORMAT('  Total number of directions:  ',I0)
            CLOSE(NDOUT)
            CALL FLUSHRESULTS
         ENDIF

         CALL REG_SET_NSEL(1,1,FLOAT(LITER),0.0,0.0,0.0,0.0,IRTFLG)

         END

