Beispiel #1
0
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",&center2_x,&center2_y,&center2_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();
   }
}