Exemplo n.º 1
0
void draw() {
    G_rgb(.1, .1, .1);
    G_clear();
    draw_object3ds(objs, num_objs, fov, light_pos, lm);
    //printf("draw\n");
    char fovstring[128];
    sprintf(fovstring, "Fov: %.3f rad", fov);
    char camerastring[128];
    sprintf(camerastring, "Camera: x:0 y:0 z:%f", 0.0);
    G_rgb(1, 1, 1);
    G_draw_string(fovstring, 0, 580);
    G_draw_string(camerastring, 0, 560);
    G_display_image();
}
Exemplo n.º 2
0
int main(){
  double ax[100], ay[100], bx[100], by[100];
  int anum, bnum;
  G_init_graphics(WINDOW,WINDOW);
  G_rgb(0,0,0);
  G_clear();
  G_clear(1,1,1);
  G_rgb(1,1,1);
  G_draw_string("Save", 0,585);
  G_rgb(0,1,0);
  anum = clickandsave(ax,ay);
  my_fill_polygon(ax, ay, anum);
  G_rgb(1,0,0);
  bnum = clickandsave(bx, by);
//printf("anum: %d bnum %d \n", anum, bnum);
  my_fill_polygon(bx,by,bnum);
 
G_wait_key();
   }
Exemplo n.º 3
0
int main()
{
  double pwidth, pheight, bwidth ;
  double angle,hx,hy,mx,my,sx,sy ;
  double hours,minutes,seconds ;
  double x,y,nx,ny,digit ;
  int theta ;   //INTERESTING that this MUST be int to avoid flicker-WHY?
  double oldhourtheta,oldminutetheta,oldsecondtheta ;
  char text[3] ;
  double hms[3] ; // hours,minutes,seconds


  G_init_graphics(600,600) ;
  G_rgb (1,1,1) ;
  G_fill_rectangle (0,0, 600,600) ;

  // outer circle of the clock face 
  G_rgb (1,0,0) ; // red
  theta = 0 ; // degrees 
  x = 225*cos(theta*M_PI/180) + 300 ;
  y = 225*sin(theta*M_PI/180) + 300 ;
  while (theta <= 360) {
        theta = theta + 1 ;
        nx = 225*cos(theta*M_PI/180) + 300 ;
        ny = 225*sin(theta*M_PI/180) + 300 ;
        G_line(x,y,nx,ny) ;
        x = nx ;
        y = ny ;
  }
  G_display_image() ;


  // digits on the clock face 
  G_rgb (0,0,0) ; // black
  theta = 90 ; // degrees 
  digit = 0 ;
  while (theta > -270) {
        theta = theta - 30 ;
        digit = digit + 1 ;
        nx = 200*cos(theta*M_PI/180) + 300 ;
        ny = 200*sin(theta*M_PI/180) + 300 ;
        if (digit >= 10) { 
                   text[0] = '1' ;
                   text[1] = '0' + digit - 10 ;
                   text[2] = '\0' ;
		 }
        else {
                   text[0] = '0' + digit ;
                   text[1] = '\0' ;
		 }
        G_draw_string(text,nx-5,ny-5) ;
  }
  G_display_image() ;


  oldsecondtheta = oldminutetheta = oldhourtheta = -10000000 ;
  sx = sy = mx = my = hx = hy = 300 ;
  while (0 < 1) {

  /* watch out for SLIGHT FLAW : if one of the hands overlays another,
     then if it is erased, you'll erase the other as well...this should
     fix that...we erase them all and redraw them all */

    get_timeD (hms) ;
    hours   = hms[0] ;
    minutes = hms[1] ;
    seconds = hms[2] ;

    // set the second hand 
    theta = 90 - 6*seconds  ;
    if (theta != oldsecondtheta) {
       G_rgb (1,1,1) ; // white
       G_line(300,300,sx,sy) ;
       G_line(300,300,mx,my) ;
       G_line(300,300,hx,hy) ;
       angle = theta*M_PI/180 ;
       sx = 175*cos(angle) + 300 ;
       sy = 175*sin(angle) + 300 ;
       G_rgb (1,0,0) ; // red
       G_line(300,300,sx,sy) ;
       G_line(300,300,mx,my) ;
       G_line(300,300,hx,hy) ;

       G_display_image() ;
       oldsecondtheta = theta ;
     }


    // set the minute hand 
    theta = 90 - 6*(minutes + seconds/60.0)  ;
    if (theta != oldminutetheta) {
       G_rgb (1,1,1) ; // white
       G_line(300,300,sx,sy) ;
       G_line(300,300,mx,my) ;
       G_line(300,300,hx,hy) ;
       angle = theta*M_PI/180 ;
       mx = 140*cos(angle) + 300 ;
       my = 140*sin(angle) + 300 ;
       G_rgb (1,0,0) ; // red
       G_line(300,300,sx,sy) ;
       G_line(300,300,mx,my) ;
       G_line(300,300,hx,hy) ;

       G_display_image() ;
       oldminutetheta = theta ;
     }

    // set the hour hand 
    theta = 90 - 30*(hours + minutes/60.0 + seconds/3600.0)  ;
    if (theta != oldhourtheta) {
       G_rgb (1,1,1) ; // white
       G_line(300,300,sx,sy) ;
       G_line(300,300,mx,my) ;
       G_line(300,300,hx,hy) ;
       angle = theta*M_PI/180 ;
       hx = 75*cos(angle) + 300 ;
       hy = 75*sin(angle) + 300 ;
       G_rgb (1,0,0) ; // red
       G_line(300,300,sx,sy) ;
       G_line(300,300,mx,my) ;
       G_line(300,300,hx,hy) ;

       G_display_image() ;
       oldhourtheta = theta ;
     }

   } // end while (0 < 1) 

}
Exemplo n.º 4
0
int main()
{
   double swidth, sheight ;
   double lowleftx, lowlefty, width, height ;
   double x[10],y[10] ;
   double numpoints,q, x0,y0,x1,y1 ;
   double p[2] ;

   // must do this before you do 'almost' any other
   // graphical tasks 
   swidth = 400 ;  sheight = 400 ;
   G_init_graphics (swidth, sheight) ;


   // draw a point, a line, some rectangles, some triangles 

   G_rgb(1, 0, 0) ;  // red 
   G_point(200, 380) ;

   G_rgb(0, 1, 0) ;  // green
   //   G_line (0, 0, 400, 400) ; // won't show if part is off screen
   G_line (0, 0, 399, 399) ;
  
   G_rgb(0, 0, 1) ;  // blue 
   lowleftx = 200 ; lowlefty = 50 ; width = 10 ; height = 30 ;
   G_rectangle (lowleftx, lowlefty, width, height) ;
   lowleftx = 250 ; 
   G_fill_rectangle (lowleftx, lowlefty, width, height) ;

   G_rgb(1, 1, 0) ;  // yellow
   G_triangle (10, 300,  40,300,  60,250) ;
   G_fill_triangle (10,100,  40,100,  60,150) ;

   G_rgb(1, 0.5, 0) ;  // orange
   G_circle (100, 300, 75) ;
   G_fill_circle (370, 200, 50) ;

   // prints text in your graphics window 
   G_rgb(0, 0, 0) ;  // black
   G_draw_string ("hello",300,100) ;

   // draw a polygon 
   x[0] = 100 ;   y[0] = 100 ;
   x[1] = 100 ;   y[1] = 300 ;
   x[2] = 300 ;   y[2] = 300 ;
   x[3] = 300 ;   y[3] = 100 ;
   x[4] = 200 ;   y[4] = 175 ;
   numpoints = 5 ;
   G_polygon (x,y,numpoints) ;


   q = G_wait_key() ; // pause to look ...any key to continue


   G_rgb (0.4, 0.2, 0.1) ; // brown
   G_fill_polygon (x,y,numpoints) ;

   G_rgb (0.5, 0.8, 0.4) ;// what color is this?

   G_wait_click(p) ;   // wait for a mouse click
   x0 = p[0] ; y0 = p[1] ; // extract coordinates 
   G_fill_rectangle (x0-2, y0-2, 4,4) ;// mark the clicked point


   G_wait_click(p) ;  
   x1 = p[0] ; y1 = p[1] ;
   G_fill_rectangle (x1-2, y1-2, 4,4) ;


   G_rgb (0.5, 0.5, 0.5) ; // a grey
   G_line (x0,y0, x1,y1) ;

   q = G_wait_key() ;    // pause again before exit 

   G_save_image_to_file ("t01c.xwd") ;

   G_close() ; // terminate graphics...probably not fatal if forgotten

}
Exemplo n.º 5
0
int main()
{
   int    swidth, sheight ;
   double lowleftx, lowlefty, width, height ;
   double x[10],y[10] ;
   double numpoints,q, x0,y0,x1,y1 ;
   double p[2] ;
   int    i ;


   // must do this before you do 'almost' any other
   // graphical tasks 
   swidth = 400 ;  sheight = 500 ;
   G_init_graphics (swidth, sheight) ;


   // draw a point, a line, some rectangles, some triangles 

   G_rgb(1, 0, 0) ;  // red 
   G_point(200, 380) ;
   G_fill_rectangle (300,400, 50, 20) ;

   G_rgb(0, 1, 0) ;  // green
   //   G_line (0, 0, 400, 400) ; // won't show if part is off screen
   G_line (0, 0, 399, 399) ;
   G_fill_triangle(50, 400,  100,400,  150,475) ;
  
   G_rgb(0, 0, 1) ;  // blue 
   lowleftx = 200 ; lowlefty = 50 ; width = 10 ; height = 30 ;
   G_rectangle (lowleftx, lowlefty, width, height) ;
   lowleftx = 250 ; 
   G_fill_rectangle (lowleftx, lowlefty, width, height) ;


   G_rgb(1, 1, 0) ;  // yellow
   G_triangle (10, 300,  40,300,  60,250) ;
   G_fill_triangle (10,100,  40,100,  60,150) ;

   G_rgb(1, 0.5, 0) ;  // orange
   G_circle (100, 300, 75) ;
   G_fill_circle (370, 200, 50) ;

   // prints text in your graphics window 
   G_rgb(0, 0, 0) ;  // black
   G_draw_string ("hello",300,100) ;



   // draw a polygon 
   x[0] = 100 ;   y[0] = 100 ;
   x[1] = 100 ;   y[1] = 300 ;
   x[2] = 300 ;   y[2] = 300 ;
   x[3] = 300 ;   y[3] = 100 ;
   x[4] = 200 ;   y[4] = 175 ;
   numpoints = 5 ;
   G_polygon (x,y,numpoints) ;


   G_rgb (0.4, 0.2, 0.1) ; // brown
   G_fill_polygon (x,y,numpoints) ;

   G_rgb (0.5, 0.8, 0.4) ;// what color is this?



   int xc,yc ;
   int pixel ;
   int rgbI[3] ;
   double rgb[3] ;

   G_wait_click(p) ;  
   xc = p[0] ; yc = p[1] ;
   while (yc > 20) {

     printf("%d %d\n",xc,yc) ;
     pixel = G_get_pixel(xc,yc) ;
     G_convert_pixel_to_rgbI(pixel, rgbI) ;
     G_convert_rgbI_to_rgb(rgbI, rgb) ;

     printf("pixel = %x\n",pixel) ;
     printf("%3d %3d %3d\n",rgbI[0],rgbI[1],rgbI[2]) ;
     printf("%lf %lf %lf\n",rgb[0],rgb[1],rgb[2]) ;
     printf("\n") ;

     G_wait_click(p) ;  
     xc = p[0] ; yc = p[1] ;
   }





}
Exemplo n.º 6
0
Arquivo: clock.c Projeto: qrohlf/CS467
int main()
{
  //  analog clock using double buffering...simpler
  double hours,minutes,seconds,x,y,nx,ny,theta,digit ;
  double hx,hy,mx,my,sx,sy,angle ;
  double oldhourtheta,oldminutetheta,oldsecondtheta ;
  char text[3] ;
  double hms[3] ;
  double xx[100],yy[100] ;
  int num ;
 

  G_init_graphics(600,600) ;

  while (0 < 1) {

    // blank the window
    G_rgb(0.3, 0.3, 0.3) ;
    G_clear() ;

    // outer circle of the clock face 

    G_rgb(0,0,1) ;
    G_fill_circle(300,300,230) ;
    G_rgb (1,0.5,0) ; 
    G_fill_circle(300,300,220) ;


    // digits on the clock face 
    G_rgb (0,0,0) ;
    theta = 90 ; // degrees 
    digit = 0 ;
    while (theta > -270) {
        theta = theta - 30 ;
        digit = digit + 1 ;
        nx = 200*cos(theta*M_PI/180) + 300 ;
        ny = 200*sin(theta*M_PI/180) + 300 ;
        if (digit >= 10) { 
                   text[0] = '1' ;
                   text[1] = '0' + digit - 10 ;
                   text[2] = '\0' ;
		 }
        else {
                   text[0] = '0' + digit ;
                   text[1] = '\0' ;
		 }
        G_draw_string(text,nx-5,ny-5) ;
    }


    //    get_timeD(hms) ;
    //    hours   = hms[0] ;
    //    minutes = hms[1] ;
    //    seconds = hms[2] ;
    printf("enter hours minutes seconds") ;
    scanf("%lf %lf %lf",&hours,&minutes,&seconds) ;




    G_rgb (0,0,0) ; 

    // set the second hand 
    theta = 90 - 6*seconds  ;
    angle = theta*M_PI/180 ;
    sx = 175*cos(angle) + 300 ;
    sy = 175*sin(angle) + 300 ;

    //    G_line(300,300,sx,sy) ;
    num = make_arrow (300,300,
                      sx,sy,
                      3.0,
                      xx,yy) ;
    G_fill_polygon(xx,yy,num) ;


    // set the minute hand 
    theta = 90 - 6*(minutes + seconds/60.0)  ;
    angle = theta*M_PI/180 ;
    mx = 140*cos(angle) + 300 ;
    my = 140*sin(angle) + 300 ;

    //    G_line(300,300,mx,my) ;
    num = make_arrow (300,300,
                      mx,my,
                      3.0,
                      xx,yy) ;
    G_fill_polygon(xx,yy,num) ;


    // set the hour hand 
    theta = 90 - 30*(hours + minutes/60.0 + seconds/3600.0)  ;
    angle = theta*M_PI/180 ;
    hx = 75*cos(angle) + 300 ;
    hy = 75*sin(angle) + 300 ;

    //    G_line(300,300,hx,hy) ;
    num = make_arrow (300,300,
                      hx,hy,
                      3.0,
                      xx,yy) ;
    G_fill_polygon(xx,yy,num) ;


    G_rgb(0,0,0) ;
    G_fill_circle(300,300,12) ;

    G_display_image() ;

    break ;
 } // end while (0 < 1) 

 
  G_save_image_to_file("clock.xwd") ;

}