5 * Revision 1.1.1.1 1995/10/24 10:20:20 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.25 by S.Giani
13 SUBROUTINE GDCGEM(VRPX,VRPY,VRPZ,VUPX,VUPY,VUPZ,VPNX, VPNY,VPNZ,
16 C. ******************************************************************
19 C. * This subroutine evaluates the Viewing Matrix with the same *
20 C. * algorithm and with the same input parameters as subroutine *
21 C. * GEVVM of GKS3D. *
23 C. * Input Parameters: *
25 c. * VRPX,VRPY,VRPZ,VUPX,VUPY,VUPZ,VPNX, VPNY,VPNZ *
27 C. * Output Parameters: *
32 C. * Called by : GDCGVW *
34 C. * Author : J.Salt ********* *
36 C. ******************************************************************
38 #include "geant321/gcunit.inc"
40 DIMENSION VRPT(3),VUPT(3),VPNT(3)
54 VLEN=SQRT(VPNT(1)**2+VPNT(2)**2+VPNT(3)**2)
55 AMTR(3,1)=VPNT(1)/VLEN
56 AMTR(3,2)=VPNT(2)/VLEN
57 AMTR(3,3)=VPNT(3)/VLEN
59 * First Row (U-axis) := Unit Vector Perpendicular to VUP and VPN
61 UX=VUPT(2)*VPNT(3)-VUPT(3)*VPNT(2)
62 UY=VUPT(3)*VPNT(1)-VUPT(1)*VPNT(3)
63 UZ=VUPT(1)*VPNT(2)-VUPT(2)*VPNT(1)
64 ULEN=SQRT(UX**2+UY**2+UZ**2)
66 * LENGTH=0. <=> VUP and VPN are collinear
77 * 2ND ROW(V-AXIS) := UNIT VECTOR PERPENDICULAR TO U- AND N-AXIS
79 AMTR(2,1)=AMTR(3,2)*AMTR(1,3)-AMTR(1,2)*AMTR(3,3)
80 AMTR(2,2)=AMTR(3,3)*AMTR(1,1)-AMTR(1,3)*AMTR(3,1)
81 AMTR(2,3)=AMTR(3,1)*AMTR(1,2)-AMTR(1,1)*AMTR(3,2)
83 * 4TH COLUMN : = TRANSLATION FACTORS
85 AMTR(1,4)=-(VRPT(1)*AMTR(1,1)+VRPT(2)*AMTR(1,2)+ VRPT(3)*
87 AMTR(2,4)=-(VRPT(1)*AMTR(2,1)+VRPT(2)*AMTR(2,2)+ VRPT(3)*
89 AMTR(3,4)=-(VRPT(1)*AMTR(3,1)+VRPT(2)*AMTR(3,2)+ VRPT(3)*
99 10000 FORMAT(' **** VUP and VPN are collinear ****')