22 void heappermute(
Interface* mbi,
int v[],
int n, std::map<
int, std::set< int > > ref_map,
int len );
23 void swap(
int* x,
int* y );
24 void get_cube_info(
int cube_id, std::vector< double >& scale, std::vector< double >& trans );
30 std::vector< double > scale_vec,
31 std::vector< double > trans_vec,
42 const double coords[] = { 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5,
43 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5 };
47 const int connectivity[] = {
57 const int num_verts = 8;
58 const int num_tris = 12;
83 double trans_coords[24];
84 for(
int i = 0; i < num_verts; i++ )
86 trans_coords[3 * i] = coords[3 * i] * scale_vec[0] + trans_vec[0];
87 trans_coords[3 * i + 1] = coords[3 * i + 1] * scale_vec[1] + trans_vec[1];
88 trans_coords[3 * i + 2] = coords[3 * i + 2] * scale_vec[2] + trans_vec[2];
92 for(
int i = 0; i < num_verts; ++i )
100 for(
int i = 0; i < num_tris; ++i )
102 const EntityHandle conn[] = { verts[connectivity[3 * i]], verts[connectivity[3 * i + 1]],
103 verts[connectivity[3 * i + 2]] };
111 std::string object_name;
180 std::set< int > test_set;
184 if( ref_map.size() != vols.
size() )
196 if( ref_map.find( vol_id ) == ref_map.end() )
211 test_set.insert( child_id );
215 if( test_set != ref_map[vol_id] )
227 Range all_children, desired_children;
229 int actual_dimension;
231 all_children.
clear();
234 for( it = all_children.
begin(); it != all_children.
end(); ++it )
237 if( actual_dimension == desired_dimension )
239 desired_children.
insert( *it );
243 return desired_children;
249 void get_cube_info(
int cube_id, std::vector< double >& scale, std::vector< double >& trans )
256 scale.push_back( 1 );
257 scale.push_back( 1 );
258 scale.push_back( 1 );
259 trans.push_back( 0 );
260 trans.push_back( 0 );
261 trans.push_back( 0 );
265 scale.push_back( 4 );
266 scale.push_back( 4 );
267 scale.push_back( 4 );
268 trans.push_back( 0 );
269 trans.push_back( 0 );
270 trans.push_back( 0 );
274 scale.push_back( 8 );
275 scale.push_back( 8 );
276 scale.push_back( 8 );
277 trans.push_back( 0 );
278 trans.push_back( 0 );
279 trans.push_back( 0 );
283 scale.push_back( 40 );
284 scale.push_back( 40 );
285 scale.push_back( 40 );
286 trans.push_back( 0 );
287 trans.push_back( 0 );
288 trans.push_back( 0 );
305 int num[2] = { 1, 2 };
308 std::map< int, std::set< int > > ref_map;
309 ref_map[1].insert( 1 );
310 ref_map[2].insert( 2 );
311 ref_map[2].insert( 1 );
332 int num[3] = { 1, 2, 3 };
335 std::map< int, std::set< int > > ref_map;
336 ref_map[1].insert( 1 );
337 ref_map[2].insert( 2 );
338 ref_map[2].insert( 1 );
339 ref_map[3].insert( 3 );
340 ref_map[3].insert( 2 );
360 int num[4] = { 1, 2, 3, 4 };
363 std::map< int, std::set< int > > ref_map;
364 ref_map[1].insert( 1 );
365 ref_map[2].insert( 2 );
366 ref_map[2].insert( 1 );
367 ref_map[3].insert( 3 );
368 ref_map[3].insert( 2 );
369 ref_map[4].insert( 4 );
370 ref_map[4].insert( 3 );
385 std::vector< double > scale, trans;
393 for(
int i = 0; i < len; i++ )
417 for(
int i = 0; i < n; i++ )
422 swap( &v[0], &v[n - 1] );
427 swap( &v[i], &v[n - 1] );