void scramble() { int i; for(i=0;i<20;i++) { switch(rand()%20) { case 1:xrotation(3,-1);break; case 2:xrotation(2,-1);break; case 3:xrotation(1,-1);break; case 4:xrotation(1,1);break; case 5:xrotation(3,1);break; case 6:xrotation(2,1);break; case 7:yrotation(3,-1);break; case 8:yrotation(2,-1);break; case 9:yrotation(1,-1);break; case 10:yrotation(1,1);break; case 11:yrotation(3,1);break; case 12:yrotation(2,1);break; case 13:zrotation(3,-1);break; case 14:zrotation(2,-1);break; case 15:zrotation(1,-1);break; case 16:zrotation(1,1);break; case 17:zrotation(3,1);break; case 18:zrotation(2,1);break; default:break; } } }
void OVR_SDL2_nav::step() { mat3 N = normal(inverse(yrotation(to_radians(rotation)))); vec3 v = dposition; if (move_L) v = v + vec3(-1, 0, 0); if (move_R) v = v + vec3(+1, 0, 0); if (move_D) v = v + vec3(0, -1, 0); if (move_U) v = v + vec3(0, +1, 0); if (move_F) v = v + vec3(0, 0, -1); if (move_B) v = v + vec3(0, 0, +1); if (length(v) > 1.0) v = normalize(v); position = position + N * v / 30.0; rotation = rotation + drotation; }
//__________________________________________________________DISPLAY********************************OOOOOOOOOOOO void draw() { int i; float siz=0.2,x,sp=.02; x=siz+sp; glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glRotatef(rotate_x,1.0,0.0,0.0); glRotatef(rotate_y,0.0,1.0,0.0); if(rot) { ang+=insp; if(ang>90) { ang=0; for(i=0;i<28;i++) { xro[i]=0; yro[i]=0; zro[i]=0; } if(rot==1) yrotation(layy,diry); if(rot==2) xrotation(layx,dirx); if(rot==3) zrotation(layz,dirz); if(rot==9) { yrotation(1,-1); yrotation(2,-1); yrotation(3,-1); } if(rot==11) { yrotation(1,1); yrotation(2,1); yrotation(3,1); } if(rot==14) { xrotation(1,-1); xrotation(2,-1); xrotation(3,-1); } if(rot==16) { xrotation(1,1); xrotation(2,1); xrotation(3,1); } rot=0; yes=1; } } rubic(siz,x); glutSwapBuffers(); }
mat4 OVR_SDL2_nav::view() const { return OVR_SDL2_app::view() * yrotation(to_radians(rotation)) * translation(-position); }
//__________________________________________________________DISPLAY********************************OOOOOOOOOOOO void draw() { int i,j,flag=0; float siz=0.2,x,sp=.02; x=siz+sp; glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glRotatef(rotate_x,1.0,0.0,0.0); glRotatef(rotate_y,0.0,1.0,0.0); if(rot) { ang+=insp; if(ang>90) { ang=0; for(i=0;i<28;i++) { xro[i]=0; yro[i]=0; zro[i]=0; } if(rot==1) yrotation(layy,diry); if(rot==2) xrotation(layx,dirx); if(rot==3) zrotation(layz,dirz); if(rot==9) { yrotation(1,-1); yrotation(2,-1); yrotation(3,-1); } if(rot==11) { yrotation(1,1); yrotation(2,1); yrotation(3,1); } if(rot==14) { xrotation(1,-1); xrotation(2,-1); xrotation(3,-1); } if(rot==16) { xrotation(1,1); xrotation(2,1); xrotation(3,1); } rot=0; yes=1; } } rubic(siz,x); glColor3f(0,0,0); renderBitmapString(0.6,1.1,GLUT_BITMAP_TIMES_ROMAN_24,"RESET"); renderBitmapString(-0.9,0.7,GLUT_BITMAP_TIMES_ROMAN_24,"SCRAMBLE"); if(pause==1) renderBitmapString(-0.15,0.9,GLUT_BITMAP_TIMES_ROMAN_24,"PLAY"); else{ if(pressed&&solving){ tmi++; tse+=tmi/100; tm+=tse/60; tmi%=100; tse%=60; st[0]=48+tm; st[2]=48+tse/10; st[3]=48+tse%10; st[5]=48+tmi/10; st[6]=48+tmi%10; } renderBitmapString(-0.15,0.9,GLUT_BITMAP_TIMES_ROMAN_24,"PAUSE"); } renderBitmapString(0.7,-0.5,GLUT_BITMAP_TIMES_ROMAN_24,st); for(i=0;i<6;i++) for(j=1;j<10;j++) { if(C[i][5]!=C[i][j]) { flag=1; } } if(!flag){ pressed=0; solving=0; pause=-1; renderBitmapString(-0.2,0.5,GLUT_BITMAP_TIMES_ROMAN_24,"SOLVED"); } glutSwapBuffers(); }