5 * Revision 1.1.1.1 1995/10/24 10:19:45 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.32 by S.Giani
12 SUBROUTINE CGVHED(XYZ,IFACE,IPF,DFACE,ITREE,ISTACK,ALEFT,ARIGHT)
13 ************************************************************************
16 * Author: E. Chernyaev Date: 08.08.88 *
19 * Function: Hidden line removal algorithm *
20 * (tree search is used for min-max test) *
22 * References: CGVEDG, CGVTEF *
24 * Input: XYZ(3,*) - nodes coordinates *
26 * IPF(*) - pointers to faces beginings *
27 * DFACE(6,*) - faces min-max *
28 * ITREE(4,*) - tree of faces min-max *
29 * ISTACK(*) - stack for tree search *
30 * ALEFT(*) - min-max of left subtrees *
31 * ARIGHT(*) - min-max of rigth subtrees *
37 ************************************************************************
38 #include "geant321/cgcedg.inc"
39 REAL XYZ(3,*),DFACE(6,*),ALEFT(*),ARIGHT(*)
43 INTEGER ISTACK(*),ITREE(4,*)
44 INTEGER INDLFT(5),INDRGT(5)
46 DATA INDLFT/3,4,5,1,2/,INDRGT/3,4,1,2,1/
53 IF (DEDGE(IND) .GT. DFACE(IND,NF)) GOTO 300
55 IF (DEDGE(I) .GT. DFACE(I,NF)) GOTO 220
58 CALL CGVTEF(IFACE(NIPF),XYZ,IVIS)
59 IF (IVIS .LT. 0) GOTO 900
60 * S T O R E L E F T L I N K I N S T A C K (IF NEED)
61 220 IF (DEDGE(INDLFT(IND)) .GT. ALEFT(JT)) GOTO 300
63 ISTACK(JS) = ITREE(2,JT)
64 * S T E P T O R I G H T
65 300 IF (DEDGE(INDRGT(IND)) .GT. ARIGHT(JT)) GOTO 400
68 * R E S T O R E L E F T L I N K F R O M S T A C K
69 400 IF (JS .EQ. 0) GOTO 999