35
36
37
38#include "implicit_f.inc"
39
40
41
42
44 . x1, x2, x3, x4, x5, x6, x7, x8,
45 . y1, y2, y3, y4, y5, y6, y7, y8,
46 . z1, z2, z3, z4, z5, z6, z7, z8,
47 . e1x, e1y, e1z,
48 . e2x, e2y, e2z,
49 . e3x, e3y, e3z
50
51
52
53 INTEGER I
54
55
57 . x17 , x28 , x35 , x46,
58 . y17 , y28 , y35 , y46,
59 . z17 , z28 , z35 , z46,
60 . a17 , a28 ,
61 . b17 , b28 ,
62 . c17 , c28 ,
63 . rx , ry , rz ,
64 . tx , ty , tz ,
65 . det,c1,c2, sign,
66 . sx , sy , sz ,
67 . rsx , rsy , rsz
68
69 x17=x7-x1
70 x28=x8-x2
71 x35=x5-x3
72 x46=x6-x4
73 y17=y7-y1
74 y28=y8-y2
75 y35=y5-y3
76 y46=y6-y4
77 z17=z7-z1
78 z28=z8-z2
79 z35=z5-z3
80 z46=z6-z4
81
82 rx=x17+x28-x35-x46
83 ry=y17+y28-y35-y46
84 rz=z17+z28-z35-z46
85 a17=x17+x46
86 a28=x28+x35
87 b17=y17+y46
88 b28=y28+y35
89 c17=z17+z46
90 c28=z28+z35
91
92 tx=a17-a28
93 ty=b17-b28
94 tz=c17-c28
95
96
97
98 e3x = ty * rz - tz * ry
99 e3y = tz * rx - tx * rz
100 e3z = tx * ry - ty * rx
101
102 det = sqrt(e3x*e3x + e3y*e3y + e3z*e3z)
103 IF ( det/=zero) det = one / det
104 e3x = e3x * det
105 e3y = e3y * det
106 e3z = e3z * det
107
108 c1=sqrt(tx*tx+ty*ty+tz*tz)
109 c2=sqrt(rx*rx+ry*ry+rz*rz)
110 e1x=tx*c2 +(ry * e3z - rz * e3y)*c1
111 e1y=ty*c2 +(rz * e3x - rx * e3z)*c1
112 e1z=tz*c2 +(rx * e3y - ry * e3x)*c1
113 det = sqrt(e1x*e1x + e1y*e1y + e1z*e1z)
114 IF ( det/=zero) det = one / det
115 e1x = e1x*det
116 e1y = e1y*det
117 e1z = e1z*det
118
119 e2x = e3y * e1z - e3z * e1y
120 e2y = e3z * e1x - e3x * e1z
121 e2z = e3x * e1y - e3y * e1x
122
123 RETURN