41 #ifndef PQP_OBB_DISJOINT
42 #define PQP_OBB_DISJOINT
45 #include "PQP_Compile.h"
62 obb_disjoint(PQP_REAL B[3][3], PQP_REAL T[3], PQP_REAL a[3], PQP_REAL b[3])
64 register PQP_REAL t, s;
67 const PQP_REAL reps = (PQP_REAL)1e-6;
70 Bf[0][0] = myfabs(B[0][0]); Bf[0][0] += reps;
71 Bf[0][1] = myfabs(B[0][1]); Bf[0][1] += reps;
72 Bf[0][2] = myfabs(B[0][2]); Bf[0][2] += reps;
73 Bf[1][0] = myfabs(B[1][0]); Bf[1][0] += reps;
74 Bf[1][1] = myfabs(B[1][1]); Bf[1][1] += reps;
75 Bf[1][2] = myfabs(B[1][2]); Bf[1][2] += reps;
76 Bf[2][0] = myfabs(B[2][0]); Bf[2][0] += reps;
77 Bf[2][1] = myfabs(B[2][1]); Bf[2][1] += reps;
78 Bf[2][2] = myfabs(B[2][2]); Bf[2][2] += reps;
87 (a[0] + b[0] * Bf[0][0] + b[1] * Bf[0][1] + b[2] * Bf[0][2]));
91 s = T[0]*B[0][0] + T[1]*B[1][0] + T[2]*B[2][0];
95 (b[0] + a[0] * Bf[0][0] + a[1] * Bf[1][0] + a[2] * Bf[2][0]));
102 (a[1] + b[0] * Bf[1][0] + b[1] * Bf[1][1] + b[2] * Bf[1][2]));
109 (a[2] + b[0] * Bf[2][0] + b[1] * Bf[2][1] + b[2] * Bf[2][2]));
113 s = T[0]*B[0][1] + T[1]*B[1][1] + T[2]*B[2][1];
117 (b[1] + a[0] * Bf[0][1] + a[1] * Bf[1][1] + a[2] * Bf[2][1]));
121 s = T[0]*B[0][2] + T[1]*B[1][2] + T[2]*B[2][2];
125 (b[2] + a[0] * Bf[0][2] + a[1] * Bf[1][2] + a[2] * Bf[2][2]));
129 s = T[2] * B[1][0] - T[1] * B[2][0];
133 (a[1] * Bf[2][0] + a[2] * Bf[1][0] +
134 b[1] * Bf[0][2] + b[2] * Bf[0][1]));
138 s = T[2] * B[1][1] - T[1] * B[2][1];
142 (a[1] * Bf[2][1] + a[2] * Bf[1][1] +
143 b[0] * Bf[0][2] + b[2] * Bf[0][0]));
147 s = T[2] * B[1][2] - T[1] * B[2][2];
151 (a[1] * Bf[2][2] + a[2] * Bf[1][2] +
152 b[0] * Bf[0][1] + b[1] * Bf[0][0]));
156 s = T[0] * B[2][0] - T[2] * B[0][0];
160 (a[0] * Bf[2][0] + a[2] * Bf[0][0] +
161 b[1] * Bf[1][2] + b[2] * Bf[1][1]));
165 s = T[0] * B[2][1] - T[2] * B[0][1];
169 (a[0] * Bf[2][1] + a[2] * Bf[0][1] +
170 b[0] * Bf[1][2] + b[2] * Bf[1][0]));
174 s = T[0] * B[2][2] - T[2] * B[0][2];
178 (a[0] * Bf[2][2] + a[2] * Bf[0][2] +
179 b[0] * Bf[1][1] + b[1] * Bf[1][0]));
183 s = T[1] * B[0][0] - T[0] * B[1][0];
187 (a[0] * Bf[1][0] + a[1] * Bf[0][0] +
188 b[1] * Bf[2][2] + b[2] * Bf[2][1]));
192 s = T[1] * B[0][1] - T[0] * B[1][1];
196 (a[0] * Bf[1][1] + a[1] * Bf[0][1] +
197 b[0] * Bf[2][2] + b[2] * Bf[2][0]));
201 s = T[1] * B[0][2] - T[0] * B[1][2];
205 (a[0] * Bf[1][2] + a[1] * Bf[0][2] +
206 b[0] * Bf[2][1] + b[1] * Bf[2][0]));