26 #include <boost/version.hpp>
27 #if BOOST_VERSION != 102800
28 #if defined (_MSC_VER) && _MSC_VER <= 1200
32 #include <boost/python/to_python_converter.hpp>
33 #include <boost/python/to_python_indirect.hpp>
34 #include <boost/python/to_python_value.hpp>
35 #include <boost/python/converter/builtin_converters.hpp>
37 #if defined (_MSC_VER) && _MSC_VER <= 1200
41 #include <boost/python/detail/extension_class.hpp>
44 #define _CZ (761.465325527)
59 static char fff[4] =
"fff";
60 PyArg_ParseTuple( p, fff, &vec.i, &vec.j, &vec.k );
67 static char ddd[4] =
"ddd";
68 PyArg_ParseTuple( p, ddd, &vec.i, &vec.j, &vec.k );
84 else if (k <= 0 && i == 0)
86 else if (k > 0 && i == 0)
101 else if (j <= 0 && i == 0)
103 else if (j > 0 && i == 0)
118 else if (j <= 0 && k == 0)
120 else if (j > 0 && k == 0)
129 Vector temp1, temp2, temp3;
134 temp2.i = temp1.i*p.i+temp1.j*q.i+temp1.k*r.i;
135 temp2.j = temp1.i*p.j+temp1.j*q.j+temp1.k*r.j;
136 temp2.k = temp1.i*p.k+temp1.j*q.k+temp1.k*r.k;
141 temp3.i = temp1.i*p.i+temp1.j*q.i+temp1.k*r.i;
142 temp3.j = temp1.i*p.j+temp1.j*q.j+temp1.k*r.j;
143 temp3.k = temp1.i*p.k+temp1.j*q.k+temp1.k*r.k;
150 Vector temp1, temp2, temp3;
155 temp2.i = temp1.i*p.i+temp1.j*q.i+temp1.k*r.i;
156 temp2.j = temp1.i*p.j+temp1.j*q.j+temp1.k*r.j;
157 temp2.k = temp1.i*p.k+temp1.j*q.k+temp1.k*r.k;
162 temp3.i = temp1.i*p.i+temp1.j*q.i+temp1.k*r.i;
163 temp3.j = temp1.i*p.j+temp1.j*q.j+temp1.k*r.j;
164 temp3.k = temp1.i*p.k+temp1.j*q.k+temp1.k*r.k;
171 Vector temp1, temp2, temp3;
176 temp2.i = temp1.i*p.i+temp1.j*q.i+temp1.k*r.i;
177 temp2.j = temp1.i*p.j+temp1.j*q.j+temp1.k*r.j;
178 temp2.k = temp1.i*p.k+temp1.j*q.k+temp1.k*r.k;
183 temp3.i = temp1.i*p.i+temp1.j*q.i+temp1.k*r.i;
184 temp3.j = temp1.i*p.j+temp1.j*q.j+temp1.k*r.j;
185 temp3.k = temp1.i*p.k+temp1.j*q.k+temp1.k*r.k;
193 p.j = p.k = q.i = q.k = r.i = r.j = 0;
198 ScaledCrossProduct( p, q, r );
199 ScaledCrossProduct( r, p, q );
207 if ( (p.i == p.j) == 0 ) {
222 ScaledCrossProduct( r, p, q );
223 ScaledCrossProduct( q, r, p );