48
49
50
51#include "implicit_f.inc"
52
53
54
55 my_real x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e1y, e1z, e2x,e2y, e2z, e3x, e3y, e3z
56 INTEGER NIR
57
58
59
61
62
63 IF(nir==4)THEN
64 e1x = (x2 + x3 - x1 - x4)
65 e1y = (y2 + y3 - y1 - y4)
66 e1z = (z2 + z3 - z1 - z4)
67 e2x = (x3 + x4 - x1 - x2)
68 e2y = (y3 + y4 - y1 - y2)
69 e2z = (z3 + z4 - z1 - z2)
70 ELSE
71 e1x = (x2 + x3 - two * x1)
72 e1y = (y2 + y3 - two * y1)
73 e1z = (z2 + z3 - two * z1)
74 e2x = (two * x3 - x1 - x2)
75 e2y = (two * y3 - y1 - y2)
76 e2z = (two * z3 - z1 - z2)
77 END IF
78 e3x = e1y*e2z - e1z*e2y
79 e3y = e1z*e2x - e1x*e2z
80 e3z = e1x*e2y - e1y*e2x
81
82 sum_ = e3x*e3x+e3y*e3y+e3z*e3z
83 sum_ = one /
max(sqrt(sum_),em20)
84 e3x = e3x * sum_
85 e3y = e3y * sum_
86 e3z = e3z * sum_
87
88 IF (nir == 4) THEN
89 s1 = e1x*e1x+e1y*e1y+e1z*e1z
90 s2 = e2x*e2x+e2y*e2y+e2z*e2z
91 sum_ = sqrt(s1/s2)
92 e1x = e1x + (e2y*e3z-e2z*e3y)*sum_
93 e1y = e1y + (e2z*e3x-e2x*e3z)*sum_
94 e1z = e1z + (e2x*e3y-e2y*e3x)*sum_
95 ENDIF
96
97 sum_ = e1x*e1x+e1y*e1y+e1z*e1z
98 sum_ = one /
max(sqrt(sum_),em20)
99 e1x = e1x * sum_
100 e1y = e1y * sum_
101 e1z = e1z * sum_
102
103 e2x = e3y * e1z - e3z * e1y
104 e2y = e3z * e1x - e3x * e1z
105 e2z = e3x * e1y - e3y * e1x
106
107 RETURN