79 double x1, x2, x3, x4, x5, x6, x7, x8, a1, a2, a3, a4, a5, a6, a7, a8;
80 double y1, y2, y3, y4, y5, y6, y7, y8, b1, b2, b3, b4, b5, b6, b7, b8;
81 double z1, z2, z3, z4, z5, z6, z7, z8, c1, c2, c3, c4, c5, c6, c7, c8;
82 double xp, yp, zp, u, v, w;
118 a1 = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8;
119 a2 = -x1 - x2 + x3 + x4 - x5 - x6 + x7 + x8;
120 a3 = -x1 + x2 + x3 - x4 - x5 + x6 + x7 - x8;
121 a4 = x1 + x2 + x3 + x4 - x5 - x6 - x7 - x8;
122 a5 = x1 - x2 + x3 - x4 + x5 - x6 + x7 - x8;
123 a6 = -x1 - x2 + x3 + x4 + x5 + x6 - x7 - x8;
124 a7 = -x1 + x2 + x3 - x4 + x5 - x6 - x7 + x8;
125 a8 = x1 - x2 + x3 - x4 - x5 + x6 - x7 + x8;
127 b1 = y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8;
128 b2 = -y1 - y2 + y3 + y4 - y5 - y6 + y7 + y8;
129 b3 = -y1 + y2 + y3 - y4 - y5 + y6 + y7 - y8;
130 b4 = y1 + y2 + y3 + y4 - y5 - y6 - y7 - y8;
131 b5 = y1 - y2 + y3 - y4 + y5 - y6 + y7 - y8;
132 b6 = -y1 - y2 + y3 + y4 + y5 + y6 - y7 - y8;
133 b7 = -y1 + y2 + y3 - y4 + y5 - y6 - y7 + y8;
134 b8 = y1 - y2 + y3 - y4 - y5 + y6 - y7 + y8;
136 c1 = z1 + z2 + z3 + z4 + z5 + z6 + z7 + z8;
137 c2 = -z1 - z2 + z3 + z4 - z5 - z6 + z7 + z8;
138 c3 = -z1 + z2 + z3 - z4 - z5 + z6 + z7 - z8;
139 c4 = z1 + z2 + z3 + z4 - z5 - z6 - z7 - z8;
140 c5 = z1 - z2 + z3 - z4 + z5 - z6 + z7 - z8;
141 c6 = -z1 - z2 + z3 + z4 + z5 + z6 - z7 - z8;
142 c7 = -z1 + z2 + z3 - z4 + z5 - z6 - z7 + z8;
143 c8 = z1 - z2 + z3 - z4 - z5 + z6 - z7 + z8;
151 if ( ( ++nite ) > 10 ) {
161 r.at(1) = a1 + u * a2 + v * a3 + w * a4 + u * v * a5 + u * w * a6 + v * w * a7 + u * v * w * a8 - 8.0 * xp;
162 r.at(2) = b1 + u * b2 + v * b3 + w * b4 + u * v * b5 + u * w * b6 + v * w * b7 + u * v * w * b8 - 8.0 * yp;
163 r.at(3) = c1 + u * c2 + v * c3 + w * c4 + u * v * c5 + u * w * c6 + v * w * c7 + u * v * w * c8 - 8.0 * zp;
166 if ( r.computeSquaredNorm() < 1.e-20 ) {
170 p.
at(1, 1) = a2 + v * a5 + w * a6 + v * w * a8;
171 p.
at(1, 2) = a3 + u * a5 + w * a7 + u * w * a8;
172 p.
at(1, 3) = a4 + u * a6 + v * a7 + u * v * a8;
174 p.
at(2, 1) = b2 + v * b5 + w * b6 + v * w * b8;
175 p.
at(2, 2) = b3 + u * b5 + w * b7 + u * w * b8;
176 p.
at(2, 3) = b4 + u * b6 + v * b7 + u * v * b8;
178 p.
at(3, 1) = c2 + v * c5 + w * c6 + v * w * c8;
179 p.
at(3, 2) = c3 + u * c5 + w * c7 + u * w * c8;
180 p.
at(3, 3) = c4 + u * c6 + v * c7 + u * v * c8;
191 for (
int i = 1; i <= 3; i++ ) {