int main() { double swidth, sheight ; double i,x,y ; double z[2] ; swidth = 600 ; sheight = 600 ; G_init_graphics(swidth, sheight); i = 0; while(i<600){ G_rgb(0,0,1) ; G_line (i, 0, i, 599) ; G_line(0,i,599,i) ; i=i+10 ; } i=0; while(i<10){ G_wait_click(z) ; x = z[0] ; y = z[1] ; x=x-fmod(x,10); y=y-fmod(y,10); G_fill_rectangle(x, y ,10,10); i++; } G_wait_key(); }
void getClippingWindow(){ double coords[2]; int i = 0; G_rgb(255,0,0); G_fill_rectangle(0,0,40,40); while(1==1){ G_wait_click(coords); if(coords[0] < 40 && coords[1] < 40){ break;} else{ cx[i] = coords[0]; cy[i] = coords[1]; G_rgb(255,255,255); G_fill_rectangle(coords[0],coords[1], 5,5); center[0] += cx[i]; center[1] += cy[i]; i++; } } center[0] /=i; center[1] /=i; cSize = i; }
int main (int argc, char **argv) { int w,h,nrows, ncols ; double r[2],g[2],b[2] ; int i,j,k,q ; double dx,dy ; if (argc != 12) { printf("Usage : pgm xwd_res_file_name width height nrows ncols r0 g0 b0 r1 g1 b1\n") ; exit(0) ; } w = atoi(argv[2]) ; h = atoi(argv[3]) ; nrows = atoi(argv[4]) ; ncols = atoi(argv[5]) ; r[0] = atof(argv[6]) ; g[0] = atof(argv[7]) ; b[0] = atof(argv[8]) ; r[1] = atof(argv[9]) ; g[1] = atof(argv[10]) ; b[1] = atof(argv[11]) ; G_init_graphics(w,h) ; G_rgb(0,1,0) ; G_clear() ; // reveals a green bottom line...error in FPT's G_fill_rectangle // ...now fixed dx = 1.0*w/ncols ; dy = 1.0*h/nrows ; for (i = 0 ; i < ncols ; i++) { for (j = 0 ; j < nrows ; j++) { k = (i + j) % 2 ; G_rgb(r[k],g[k],b[k]) ; G_fill_rectangle(i*dx,j*dy,dx,dy) ; } } q = G_wait_key() ; G_save_image_to_file(argv[1]) ; }
int clickandsave(double x[], double y[]){ double coords[2]; int length; int i; for(i = 0; i< 100; i++){ G_wait_click(coords); if(coords[0] < 44 && coords[1] > 580){ break; } else{ x[i] = coords[0]; y[i] = coords[1]; G_fill_rectangle(coords[0] -1, coords[1] -1 , 3, 3 ); length = i; } } return i; }
int click_and_save (double *x, double *y) { int n ; double P[2] ; G_rgb(0,1,0.5) ; G_fill_rectangle(0,0,swidth,20) ; G_rgb(1,0,0) ; G_wait_click(P); n = 0 ; while (P[1] > 20) { x[n] = P[0] ; y[n] = P[1] ; G_circle(x[n],y[n],2) ; if (n > 0) { G_line(x[n-1],y[n-1], x[n],y[n]) ;} n++ ; G_wait_click(P) ; } return n ; }
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) }
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 }
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] ; } }