35
36
37
38#include "implicit_f.inc"
39
40
41
43 . x1, x2, x3, x4, x5, x6, x7, x8,
44 . y1, y2, y3, y4, y5, y6, y7, y8,
45 . z1, z2, z3, z4, z5, z6, z7, z8,
46 . e1x, e1y, e1z,
47 . e2x, e2y, e2z,
48 . e3x, e3y, e3z
49
50
51
52 INTEGER N,NITER
54 . x17 , x28 , x35 , x46,
55 . y17 , y28 , y35 , y46,
56 . z17 , z28 , z35 , z46,
57 . a17 , a28 ,
58 . b17 , b28 ,
59 . c17 , c28 ,
60 . rx , ry , rz ,
61 . sx , sy , sz ,
62 . tx , ty , tz
64 . aa,bb
65 DATA niter/3/
66
67 x17=x7-x1
68 x28=x8-x2
69 x35=x5-x3
70 x46=x6-x4
71 y17=y7-y1
72 y28=y8-y2
73 y35=y5-y3
74 y46=y6-y4
75 z17=z7-z1
76 z28=z8-z2
77 z35=z5-z3
78 z46=z6-z4
79 rx=x17+x28-x35-x46
80 ry=y17+y28-y35-y46
81 rz=z17+z28-z35-z46
82 a17=x17+x46
83 a28=x28+x35
84 b17=y17+y46
85 b28=y28+y35
86 c17=z17+z46
87 c28=z28+z35
88 sx=a17+a28
89 sy=b17+b28
90 sz=c17+c28
91 tx=a17-a28
92 ty=b17-b28
93 tz=c17-c28
94
95
96
97 aa = sqrt(rx*rx + ry*ry + rz*rz)
98 if ( aa/=zero) aa = one / aa
99 rx = rx * aa
100 ry = ry * aa
101 rz = rz * aa
102 aa = sqrt(sx*sx + sy*sy + sz*sz)
103 if ( aa/=zero) aa = one / aa
104 sx = sx * aa
105 sy = sy * aa
106 sz = sz * aa
107 aa = sqrt(tx*tx + ty*ty + tz*tz)
108 if ( aa/=zero) aa = one / aa
109 tx = tx * aa
110 ty = ty * aa
111 tz = tz * aa
112
113
114
115 n=0
116111 CONTINUE
117 n=n+1
118
119 e1x = sy * tz - sz * ty + rx
120 e1y = sz * tx - sx * tz + ry
121 e1z = sx * ty - sy * tx + rz
122
123 e2x = ty * rz - tz * ry + sx
124 e2y = tz * rx - tx * rz + sy
125 e2z = tx * ry - ty * rx + sz
126
127 e3x = ry * sz - rz * sy + tx
128 e3y = rz * sx - rx * sz + ty
129 e3z = rx * sy - ry * sx + tz
130
131 bb = sqrt(e1x*e1x + e1y*e1y + e1z*e1z)
132 if ( bb/=zero) bb = one / bb
133 rx = e1x * bb
134 ry = e1y * bb
135 rz = e1z * bb
136
137 bb = sqrt(e2x*e2x + e2y*e2y + e2z*e2z)
138 if ( bb/=zero) bb = one / bb
139 sx = e2x * bb
140 sy = e2y * bb
141 sz = e2z * bb
142
143 bb = sqrt(e3x*e3x + e3y*e3y + e3z*e3z)
144 if ( bb/=zero) bb = one / bb
145 tx = e3x * bb
146 ty = e3y * bb
147 tz = e3z * bb
148
149 IF (n<niter) GOTO 111
150
151
152 e1x = rx
153 e1y = ry
154 e1z = rz
155
156 e3x = e1y * sz - e1z * sy
157 e3y = e1z * sx - e1x * sz
158 e3z = e1x * sy - e1y * sx
159
160 aa = sqrt(e3x*e3x + e3y*e3y + e3z*e3z)
161 if ( aa/=zero) aa = one / aa
162 e3x = e3x * aa
163 e3y = e3y * aa
164 e3z = e3z * aa
165
166 e2x = e3y * e1z - e3z * e1y
167 e2y = e3z * e1x - e3x * e1z
168 e2z = e3x * e1y - e3y * e1x
169
170 RETURN