]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1995/10/24 10:19:43 cernlib | |
6 | * Geant | |
7 | * | |
8 | * | |
9 | #include "geant321/pilot.h" | |
10 | *CMZ : 3.21/02 29/03/94 15.41.31 by S.Giani | |
11 | *-- Author : | |
12 | * | |
13 | SUBROUTINE CGFACO(VVX,VVY,IJKLMN,LFULL,APROSC) | |
14 | * | |
15 | ******************************************************************** | |
16 | * * | |
17 | * Function: Fill fully visible faces with solid colour. * | |
18 | * The colour is determined by the table in GDCOTA. * | |
19 | * The intensity is determined in GDSHAD. * | |
20 | * * | |
21 | * Author: S. Giani * | |
22 | * * | |
23 | * I/O parameters: * | |
24 | * * | |
25 | * VVX,VVY = set of edge's coordinates * | |
26 | * IJKLMN = number of edges *2. * | |
27 | * LFULL = flag for full visibility * | |
28 | * APROSC = light intensity * | |
29 | * * | |
30 | ******************************************************************** | |
31 | * | |
32 | #include "geant321/gcbank.inc" | |
33 | #include "geant321/gcunit.inc" | |
34 | #include "geant321/cggpar.inc" | |
35 | #include "geant321/cgdelt.inc" | |
36 | #include "geant321/cghpar.inc" | |
37 | #include "geant321/cgctra.inc" | |
38 | #include "geant321/cgcedg.inc" | |
39 | #include "geant321/gcdraw.inc" | |
40 | #include "geant321/gcflag.inc" | |
41 | #include "geant321/gcspee.inc" | |
42 | * | |
43 | DIMENSION VVX(500),VVY(500),IZ(500) | |
44 | DIMENSION TVVX(500),TVVY(500),IACTU(500) | |
45 | * | |
46 | IACTU(1)=0 | |
47 | IACT=1 | |
48 | LINFIL=IBITS(LINATT,13,3) | |
49 | CALL ISFAIS(1) | |
50 | LINCOL=IBITS(LINATT,16,8) | |
51 | MPRECM=9-LINFIL | |
52 | IF(MPRECM.EQ.8)THEN | |
53 | CALL ISFACI(LINCOL) | |
54 | CALL ISPLCI(LINCOL) | |
55 | ELSE | |
56 | CALL GDSHAD(LINCOL,APROSC) | |
57 | ENDIF | |
58 | * | |
59 | DO 10 I=1,IJKLMN | |
60 | TVVX(I)=VVX(I) | |
61 | TVVY(I)=VVY(I) | |
62 | 10 CONTINUE | |
63 | VVX(1)=TVVX(1) | |
64 | VVY(1)=TVVY(1) | |
65 | VVX(2)=TVVX(2) | |
66 | VVY(2)=TVVY(2) | |
67 | IZ(1)=1 | |
68 | IZ(2)=2 | |
69 | KZ=3 | |
70 | IGOR=IJKLMN/2 | |
71 | DO 90 II=3,IGOR | |
72 | DO 40 JJ=3,IJKLMN | |
73 | DO 30 I=1,KZ-1 | |
74 | IF(JJ.EQ.IZ(I))GOTO 40 | |
75 | 30 CONTINUE | |
76 | C11=ABS(TVVX(JJ)-VVX(II-1)) | |
77 | C12=ABS(TVVY(JJ)-VVY(II-1)) | |
78 | IF(C11.LT..001.AND.C12.LT..001)THEN | |
79 | PDJ=JJ*.5 | |
80 | IPDJ=PDJ | |
81 | ARG=PDJ-IPDJ | |
82 | IF(ARG.GT..49)THEN | |
83 | VVX(II)=TVVX(JJ+1) | |
84 | VVY(II)=TVVY(JJ+1) | |
85 | IZ(KZ)=JJ | |
86 | IZ(KZ+1)=JJ+1 | |
87 | KZ=KZ+2 | |
88 | ELSE | |
89 | VVX(II)=TVVX(JJ-1) | |
90 | VVY(II)=TVVY(JJ-1) | |
91 | IZ(KZ)=JJ | |
92 | IZ(KZ+1)=JJ-1 | |
93 | KZ=KZ+2 | |
94 | ENDIF | |
95 | GOTO 90 | |
96 | ENDIF | |
97 | 40 CONTINUE | |
98 | IACT=IACT+1 | |
99 | IACTU(IACT)=II-2 | |
100 | NUMPON=IACTU(IACT)-IACTU(IACT-1) | |
101 | NUPO=IACTU(IACT-1)+1 | |
102 | IF(NUMPON.GT.2)THEN | |
103 | * IF(LEP.LT.0)THEN | |
104 | * DO 50 IIJ=NUPO,NUPO+NUMPON-1 | |
105 | * IF(VVY(IIJ).LT.1.)VVY(IIJ)=1. | |
106 | * 50 CONTINUE | |
107 | * ENDIF | |
108 | IF(IDVIEW.EQ.0)THEN | |
109 | CALL IFA(NUMPON,VVX(NUPO),VVY(NUPO)) | |
110 | ELSE | |
111 | LLLINA=LINATT | |
112 | CALL MVBITS(LINCOL,0,8,LINATT,16) | |
113 | CALL GVIEWF(VVX(NUPO),VVY(NUPO),NUMPON) | |
114 | LINATT=LLLINA | |
115 | ENDIF | |
116 | ENDIF | |
117 | DO 70 JJA=3,IJKLMN | |
118 | DO 60 I=1,KZ-1 | |
119 | IF(JJA.EQ.IZ(I))GOTO 70 | |
120 | 60 CONTINUE | |
121 | JJAO=JJA | |
122 | GOTO 80 | |
123 | 70 CONTINUE | |
124 | PRINT *,'Error in CGFACO' | |
125 | 80 CONTINUE | |
126 | PDJJA=JJAO*.5 | |
127 | IPDJJA=PDJJA | |
128 | ARG1=PDJJA-IPDJJA | |
129 | IF(ARG1.LT..01)PRINT *,'Error in CGFACO' | |
130 | VVX(II-1)=TVVX(JJAO) | |
131 | VVY(II-1)=TVVY(JJAO) | |
132 | VVX(II)=TVVX(JJAO+1) | |
133 | VVY(II)=TVVY(JJAO+1) | |
134 | IZ(KZ)=JJAO | |
135 | IZ(KZ+1)=JJAO+1 | |
136 | KZ=KZ+2 | |
137 | 90 CONTINUE | |
138 | * | |
139 | IACT=IACT+1 | |
140 | IACTU(IACT)=IGOR | |
141 | NUMPON=IACTU(IACT)-IACTU(IACT-1) | |
142 | NUPO=IACTU(IACT-1)+1 | |
143 | IF(NUMPON.GT.2)THEN | |
144 | * IF(LEP.LT.0)THEN | |
145 | * DO 100 IIJ=NUPO,NUPO+NUMPON-1 | |
146 | * IF(VVY(IIJ).LT.1.)VVY(IIJ)=1. | |
147 | * 100 CONTINUE | |
148 | * ENDIF | |
149 | IF(IDVIEW.EQ.0)THEN | |
150 | CALL IFA(NUMPON,VVX(NUPO),VVY(NUPO)) | |
151 | ELSE | |
152 | LLLINA=LINATT | |
153 | CALL MVBITS(LINCOL,0,8,LINATT,16) | |
154 | CALL GVIEWF(VVX(NUPO),VVY(NUPO),NUMPON) | |
155 | LINATT=LLLINA | |
156 | ENDIF | |
157 | ENDIF | |
158 | * | |
159 | * IF(IREP.EQ.0)PRINT *,IREP | |
160 | DO 120 I=1,KZ | |
161 | IZ(I)=0 | |
162 | IACTU(I)=0 | |
163 | 120 CONTINUE | |
164 | * | |
165 | END |