20 const int hex_faces[6][4] = { { 0, 1, 5, 4 }, { 1, 2, 6, 5 }, { 2, 3, 7, 6 },
21 { 3, 0, 4, 7 }, { 3, 2, 1, 0 }, { 4, 5, 6, 7 } };
38 const int* face_indices = 0 )
40 std::vector< const BSPTreePoly::Face* >::iterator i;
41 std::vector< const BSPTreePoly::Face* > faces;
42 std::vector< CartVect > corners;
44 for( i = faces.begin(); i != faces.end(); ++i )
48 if( corners.size() != (
unsigned)num_corners )
continue;
51 for( j = 0; j < num_corners; ++j )
53 int corner = face_indices ? face_indices[j] : j;
54 if( ( coords[corner] - corners.front() ).length_squared() < 1e-12 )
break;
56 if( j == num_corners )
continue;
59 for( k = 1; k < num_corners; ++k )
61 int corner = face_indices ? face_indices[( j + k ) % num_corners] : ( j + k ) % num_corners;
62 if( ( coords[corner] - corners[k] ).length_squared() > 1e-12 )
break;
65 if( k == num_corners )
return *i;
79 std::vector< const BSPTreePoly::Face* > faces;
111 for(
int i = 0; i < 8; ++i )
113 if( fabs( corners[i][2] - 2 ) < 1e-6 ) corners[i][2] = 1;
114 if( fabs( corners[i][0] - 4 ) < 1e-6 ) corners[i][0] = 5;
117 std::vector< const BSPTreePoly::Face* > faces;
148 CartVect face1[5] = { corners[0], new_vtx2, new_vtx1, corners[5], corners[4] };
149 CartVect face2[4] = { new_vtx1, new_vtx4, corners[6], corners[5] };
150 CartVect face3[5] = { new_vtx4, new_vtx3, corners[3], corners[7], corners[6] };
151 CartVect face5[4] = { corners[3], new_vtx3, new_vtx2, corners[0] };
152 CartVect face7[4] = { new_vtx1, new_vtx2, new_vtx3, new_vtx4 };