int main(int argc,char** argv){ msg r; init(HOST,PORT); if (recv_message(&r)<0){ perror("Receive message"); return -1; } int i = 0; printf("Got message: \n"); for (; i < r.len; ++ i) { r.payload[i] = fix_char(r.payload[i]); if (validate(r.payload[i])) { printf("-%x-\n", r.payload[i]); } else { printf("Error: -%x- \n", r.payload[i]); } } printf("\nOriginal message\n"); for (i = 0; i < r.len; i += 2) { char orig = get_original(r.payload[i], r.payload[i + 1]); printf("%c", orig); } return 0; }
//GLUT callback to handle keyboard events void keyboard( unsigned char key, int x, int y ) { switch(key) { case 'n': //scaling scale_constant(data,1.5,1.5,1.5); glutPostRedisplay(); break; case 'm': scale_constant(data,1.0/1.5,1.0/1.5,1.0/1.5); glutPostRedisplay(); break; case '+': //scaling zoom_in(0.3); glutPostRedisplay(); break; case '_': //scaling zoom_in(-0.3); glutPostRedisplay(); break; case 'i': Rotate_Camera_around_own_axis(10*M_PI/180,1); glutPostRedisplay(); break; case 'I': Rotate_Camera_around_own_axis(-10*M_PI/180,1); glutPostRedisplay(); break; case 'j': Rotate_Camera_around_own_axis(10*M_PI/180,2); glutPostRedisplay(); break; case 'J': Rotate_Camera_around_own_axis(-10*M_PI/180,2); glutPostRedisplay(); break; case 'k': Rotate_Camera_around_own_axis(10*M_PI/180,3); glutPostRedisplay(); break; case 'K': Rotate_Camera_around_own_axis(-10*M_PI/180,3); glutPostRedisplay(); break; /* case 116: //rotate_along(data,3); translate_along(data,0.25,0.3,0.33); glutPostRedisplay(); break; */ case '1': //translate along x for world translate_along(data,0.1,0.0,0.0); glutPostRedisplay(); break; case '!': //translate along -x for world translate_along(data,-0.1,0.0,0.0); glutPostRedisplay(); break; case '2': //translate along y for world translate_along(data,0.0,0.1,0.0); glutPostRedisplay(); break; case '@': //translate along -y for world translate_along(data,0.0,-0.1,0.0); glutPostRedisplay(); break; case '3': //translate along z for world translate_along(data,0.0,0.0,0.1); glutPostRedisplay(); break; case '#': //translate along -z for world translate_along(data,0.0,0.0,-0.1); glutPostRedisplay(); break; case '4': //rotate around X for world rotate_along(data,1); glutPostRedisplay(); break; case '5': //rotate around Y for world rotate_along(data,2); glutPostRedisplay(); break; case '6': //rotate around Z for world rotate_along(data,3); glutPostRedisplay(); break; case '7': //scale about x scale(data,1.5,1.0,1.0); glutPostRedisplay(); break; case '&': //scale about x scale(data,1.0/1.5,1.0,1.0); glutPostRedisplay(); break; case '8': //scale about y scale(data,1.0,1.5,1.0); glutPostRedisplay(); break; case '*': //scale about y scale(data,1.0,1.0/1.5,1.0); glutPostRedisplay(); break; case '9': //scale about z scale(data,1.0,1.0,1.5); glutPostRedisplay(); break; case ')': //scale about z scale(data,1.0,1.0,1.0/1.5); glutPostRedisplay(); break; /* case 't': printf("Enter the distance in x direction to translate about world coordinate system:-\n"); scanf("%f",&x_1); printf("Enter the distance in y direction to translate about world coordinate system:- \n"); scanf("%f",&y_1); printf("Enter the distance in z direction to translate about world coordinate system:- \n"); scanf("%f",&z_1); object_x+=x_1; object_y+=y_1; object_z+=z_1; translate_along(data,x_1,y_1,z_1); glutPostRedisplay(); break; */ case 'o': get_original(); glutPostRedisplay(); break; case 'r': printf("specify the coordidates of the axis represented by 2 vertices\n"); scanf("%f %f %f %f %f %f",&x_1,&y_1,&z_1,&x_2,&y_2,&z_2); printf("enter the angle of rotation\n"); scanf("%f",&theta); rotate_arbit_axis(data,x_1,y_1,z_1,x_2,y_2,z_2,theta*M_PI/180); glutPostRedisplay(); case 'l': printf("Enter the x y and z coordinates of the eye"); float eye2_x,eye2_y,eye2_z,center2_x,center2_y,center2_z,up2_x,up2_y,up2_z; scanf("%f %f %f",&eye2_x,&eye2_y,&eye2_z); printf("Enter the x y and z cocordinates of the center"); scanf("%f %f %f",¢er2_x,¢er2_y,¢er2_z); printf("enter the x y and z coordinates of the up vector"); scanf("%f %f %f",&up2_x,&up2_y,&up2_z); look_ortho(data,eye2_x,eye2_y,eye2_z,center2_x,center2_y,center2_z,up2_x,up2_y,up2_z); /* gluLookAt(0.5,0.0,0.0,0.0,0.0,-1.0,0.0,1.0,0.0); glutPostRedisplay(); break; */ case 'x': dist=0.1; look_ortho(data,e_x+dist,e_y,e_z,c_x,c_y,c_z,u_x,u_y,u_z); glutPostRedisplay(); break; case 'X': dist=-0.1; look_ortho(data,e_x+dist,e_y,e_z,c_x,c_y,c_z,u_x,u_y,u_z); glutPostRedisplay(); break; case 'y': dist=0.1; look_ortho(data,e_x,e_y+dist,e_z,c_x,c_y,c_z,u_x,u_y,u_z); glutPostRedisplay(); break; case 'Y': dist=-0.1; look_ortho(data,e_x,e_y+dist,e_z,c_x,c_y,c_z,u_x,u_y,u_z); glutPostRedisplay(); break; case 'z': dist=0.1; look_ortho(data,e_x,e_y,e_z+dist,c_x,c_y,c_z,u_x,u_y,u_z); glutPostRedisplay(); break; case 'Z': dist=-0.1; look_ortho(data,e_x,e_y,e_z+dist,c_x,c_y,c_z,u_x,u_y,u_z); glutPostRedisplay(); break; case 'u': rotate_arbit_axis(data,object_x,object_y,object_z,object_x+0.1,object_y,object_z,10*M_PI/180); glutPostRedisplay(); break; case 'U': rotate_arbit_axis(data,object_x,object_y,object_z,object_x+0.1,object_y,object_z,-10*M_PI/180); glutPostRedisplay(); break; case 'v': rotate_arbit_axis(data,object_x,object_y,object_z,object_x,object_y+0.1,object_z,10*M_PI/180); glutPostRedisplay(); break; case 'V': rotate_arbit_axis(data,object_x,object_y,object_z,object_x,object_y+0.1,object_z,-10*M_PI/180); glutPostRedisplay(); break; case 'w': rotate_arbit_axis(data,object_x,object_y,object_z,object_x,object_y,object_z+0.1,10*M_PI/180); glutPostRedisplay(); break; case 'W': rotate_arbit_axis(data,object_x,object_y,object_z,object_x,object_y,object_z+0.1,-10*M_PI/180); glutPostRedisplay(); break; case 'g': flag_lookat++; break; default: glutPostRedisplay(); break; //glutPostRedisplay(); } }