30 SUBROUTINE itribox(TRI, BOX, NORM, NVERTS, POLY, NVMAX)
34#include "implicit_f.inc"
40 . tri(3,*), box(3,*),
norm(3,*), poly(3,*)
45 INTEGER JJ, NN, IFOUND, REDIR(NVMAX)
47 . a(3), n(3), polyout(3,nvmax)
49 . x1, y1, z1, x2, y2, z2, dd, tole
51 DATA p_ref /1,5,1,2,3,4/
72 CALL polclip(poly, nverts, a, n, polyout, npout)
75 poly(1,j)=polyout(1,j)
76 poly(2,j)=polyout(2,j)
77 poly(3,j)=polyout(3,j)
92 dd=sqrt((x1-x2)**2+(y1-y2)**2+(z1-z2)**2)
93 IF (dd<=tole) ifound=j
103 poly(1,i)=polyout(1,redir(i))
104 poly(2,i)=polyout(2,redir(i))
105 poly(3,i)=polyout(3,redir(i))
115 SUBROUTINE polclip(POLYIN, NPIN, A, N, POLYOUT, NPOUT )
119#include "implicit_f.inc"
124 my_real polyin(3,*), a(*), n(*), polyout(3,*)
129 my_real x1, y1, z1, x2, y2, z2, ss1, ss2, x12, y12, z12, xa1, ya1, za1,
alpha, xm, ym, zm, ssn
147 ss1=(x1-a(1))*n(1)+(y1-a(2))*n(2)+(z1-a(3))*n(3)
148 ss2=(x2-a(1))*n(1)+(y2-a(2))*n(2)+(z2-a(3))*n(3)
149 IF (ss1<zero.AND.ss2<zero) cycle
150 IF (ss1>=zero.AND.ss2>=zero)
THEN
164 ssn=x12*n(1)+y12*n(2)+z12*n(3)
165 alpha=-(xa1*n(1)+ya1*n(2)+za1*n(3))/ssn
178 ELSEIF (ss2>=zero)
THEN