void newCube( void) { // creates a new 3x3x3 Rubik cube short po, n; int u = U + U/2; facec = MAXF; objc = MAXOBJ; // generate 8 cube corners c[2][2][2] = newCorner( +0, +0, +00, R_Y, R_O, R_B); // A c[2][0][2] = newCorner( +0, +0, +270, R_Y, R_B, R_R); // B c[0][0][2] = newCorner( +0, +0, 180, R_Y, R_R, R_G); // C c[0][2][2] = newCorner( +0, +0, +90, R_Y, R_G, R_O); // D c[0][2][0] = newCorner( +0, 180, +00, R_W, R_O, R_G); // G c[0][0][0] = newCorner( +0, 180, -90, R_W, R_G, R_R); // H c[2][0][0] = newCorner( +0, 180, 180, R_W, R_R, R_B); // E c[2][2][0] = newCorner( +0, 180, +90, R_W, R_B, R_O); // F // generate 12 cube edges c[1][2][2] = newEdge( 0, 0, 0, R_Y, R_O); // DA c[2][1][2] = newEdge( 0, 0, -90, R_Y, R_B); // AB c[1][0][2] = newEdge( 0, 0, 180, R_Y, R_R); // BC c[0][1][2] = newEdge( 0, 0, 90, R_Y, R_G); // CD c[1][2][0] = newEdge( 0, 180, 0, R_W, R_O); // FG c[0][1][0] = newEdge( 0, 180, -90, R_W, R_G); // GH c[1][0][0] = newEdge( 0, 180, 180, R_W, R_R); // HE c[2][1][0] = newEdge( 0, 180, +90, R_W, R_B); // EF c[2][2][1] = newEdge( 0, 90, 0, R_B, R_O); c[2][0][1] = newEdge( 0, 90, 180, R_B, R_R); c[0][2][1] = newEdge( 0, -90, 0, R_G, R_O); // DG c[0][0][1] = newEdge( 0, -90, 180, R_G, R_R); // add 6 more sides c[1][1][2] = newSide( 0, 0, 0, R_Y); c[2][1][1] = newSide( 0, 90, 0, R_B); c[1][1][0] = newSide( 0, 180, 0, R_W); c[0][1][1] = newSide( 0, -90, 0, R_G); c[1][2][1] = newSide( -90, 0, 0, R_O); c[1][0][1] = newSide( +90, 0, 0, R_R); olist[0].f = 0; // object 0 is empty (will be used as a temp) olist[0].n = 0; } // newObject
void cmBrush_c::perPlaneCallback( const float plEq[4] ) { plane_c pl( plEq ); cmBrushSide_c newSide( pl ); sides.push_back( newSide ); }