    	SUBROUTINE IFARRH( IT, IR, ARRAY )
C
C  PROGRMMER: R.S. ZHOU,		ALFRED UNIVERSITY
C
C	THIS ROUTINE DRAWS AN ARROWHEAD.
C
C	IT --------- TYPE OF ARROWHEAD.
C			 1: SINGLE LINE ARROW (->).
C			11: SINGLE LINE DOUBLE-ARROW (<->).
C			 2: DOUBLE LINE ARROW (=>).
C			22: DOUBLE LINE DOUBLE-ARROW (<=>).
C			 3: CONTOUR ARROWHEAD.
C			33: CONTOUR DOUBLE-ARROWHEAD.
C			 4: SOLID ARROWHEAD.
C			44: SOLID DOUBLE-ARROWHEAD.
C	IR --------- LENGTH OF "ARRAY".
C	ARRAY(1) --- LENGTH OF ARROWHEAD.
C	ARRAY(2) --- HEIGHT OF ARROWHEAD.
C	ARRAY(3) --- HEAD-SECTION LENGTH OF ARROWHEAD.
C	ARRAY(4) --- X-COORDINATE OF HEAD-TIP IN INCHES.
C	ARRAY(5) --- Y-COORDINATE OF HEAD-TIP IN INCHES.
C		     FOR A DOUBLE-ARROW, IT'S THE RIGHT TIP.
C	ARRAY(6) --- ROTATION ANGLE IN DEGREES
C		  	ANGLE = 0 OR 360 DEGREE( > )
C		  	ANGLE = 90 DEGREE( ^ )
C		  	ANGLE = 180 DEGREE( < )
C			ANGLE = -90 OR 270 DEGREE( V )
C			INTERMEDIATE ANGLES, OF COUSRE, ARE ALLOWED.
C
     	DIMENSION	ARRAY(1)
     	LOGICAL		TWO
C
C  INITIALIZE...
C
     	ITY = IABS(IT)
     	TWO = .FALSE.
     	IF( ITY.GT.10 ) THEN
     	    ITY = MOD( ITY, 10 )
     	    TWO = .TRUE.
     	ENDIF
    	WID = 0.25
     	WDD = 0.15
    	IF( ITY.EQ.1 ) HGT = 0.03
     	IF( ITY.GT.1 ) HGT = 0.15
     	XPS = 0.0
     	YPS = 0.0
     	ANG = 0.0
     	IRR = IR
     	IF( IRR.GT.0 .AND. ARRAY(1).GT.0.05 ) WID = ARRAY(1)
     	IF( IRR.GT.1 .AND. ARRAY(2).GT.0.01 ) HGT = ARRAY(2)
     	IF( IRR.GT.2 .AND. ARRAY(3).GT.0.02 ) WDD = ARRAY(3)
     	IF( IRR.GT.4 ) THEN
     	    XPS = ARRAY(4)
     	    YPS = ARRAY(5)
     	ENDIF
     	IF( IRR.GT.5 ) ANG = AMOD( ARRAY(6), 360.0 )
     	IF( .NOT.TWO .AND. WDD.GT.WID ) WDD = WID
     	IF( TWO .AND. WDD.GT.0.5*WID ) WDD = 0.5*WID
     	HGT = 0.5*HGT
C
C  MOVE ORIGIN TO (XPS,YPS)...
C
     	IF( IRR.GT.4 ) CALL IFDRAW( XPS, YPS, -9 )
     	CALL IFDRAW( 0.0, 0.0, 3 )
C
C  SET THE ROTATION IF AT ALL...
C
    	IF( IRR.GT.5 .AND. ANG.NE.0.0 ) THEN
     	    CALL IFROTA_NOW( XANG, YANG )
     	    CALL IFROTA( ANG+XANG, ANG+YANG )
     	ENDIF
C
C  START THE DRAWING...
C
     	IF( ITY.EQ.1 ) THEN	!SINGLE-LINE ARROW
     	    CALL IFDRAW( -WID, 0.0, 2 )
     	    CALL IFDRAW( -WDD, HGT, 3 )
     	    CALL IFDRAW(  0.0, 0.0, 2 )
     	    CALL IFDRAW( -WDD,-HGT, 2 )
     	    IF( TWO ) THEN
     	    	CALL IFDRAW( -WID+WDD, HGT, 3 )
     	    	CALL IFDRAW(     -WID, 0.0, 2 )
     	    	CALL IFDRAW( -WID+WDD,-HGT, 2 )
     	    ENDIF
     	ELSE IF( ITY.EQ.2 ) THEN	!DOUBLE-LINE ARROW
     	    HHH = 0.34*HGT
     	    WTN = HHH*WDD/HGT
     	    CALL IFDRAW( -WDD, HGT, 2 )
     	    CALL IFDRAW(  0.0, 0.0, 3 )
     	    CALL IFDRAW( -WDD,-HGT, 2 )
     	    IF( .NOT.TWO ) THEN
     	    	CALL IFDRAW( -WID, HHH, 3 )
     	    	CALL IFDRAW( -WTN, HHH, 2 )
     	    	CALL IFDRAW( -WTN,-HHH, 3 )
     	    	CALL IFDRAW( -WID,-HHH, 2 )
     	    ELSE
     	    	CALL IFDRAW( -WID+WDD, HGT, 3 )
     	    	CALL IFDRAW(     -WID, 0.0, 2 )
     	    	CALL IFDRAW( -WID+WDD,-HGT, 2 )
     	    	CALL IFDRAW( -WID+WTN, HHH, 3 )
     	    	CALL IFDRAW(     -WTN, HHH, 2 )
     	    	CALL IFDRAW(     -WTN,-HHH, 3 )
     	    	CALL IFDRAW( -WID+WTN,-HHH, 2 )
     	    ENDIF
     	ELSE IF( ITY.GT.2 ) THEN	!CONTOUR ARROWHEAD
     	    IF( ITY.EQ.4 ) CALL IFFILL(1)	!SOLID ARROWHEAD
     	    WWW = 0.80*WDD
     	    HHH = 0.34*HGT
     	    CALL IFPLOT(  0.0, 0.0, 3 )
     	    CALL IFPLOT( -WDD, HGT, 2 )
     	    CALL IFPLOT( -WWW, HHH, 2 )
     	    IF( .NOT.TWO ) THEN
     	    	CALL IFPLOT( -WID, HHH, 2 )
     	    	CALL IFPLOT( -WID,-HHH, 2 )
     	    ELSE
     	    	CALL IFPLOT( -WID+WWW, HHH, 2 )
     	    	CALL IFPLOT( -WID+WDD, HGT, 2 )
     		CALL IFPLOT(     -WID, 0.0, 2 )
     	    	CALL IFPLOT( -WID+WDD,-HGT, 2 )
     	    	CALL IFPLOT( -WID+WWW,-HHH, 2 )
     	    ENDIF
     	    CALL IFPLOT( -WWW,-HHH, 2 )
     	    CALL IFPLOT( -WDD,-HGT, 2 )
     	    CALL IFPLOT(  0.0, 0.0, 2 )
     	    IF( ITY.EQ.4 ) CALL IFFILL(0)	!SOLID ARROWHEAD
     	ENDIF
C
C  RESTORE...
C
888	IF( IRR.GT.5 .AND. ANG.NE.0.0 ) CALL IFROTA( XANG, YANG )
     	IF( IRR.GT.4 ) CALL IFDRAW( -ARRAY(4), -ARRAY(5), -9 )

999	RETURN
    	END

