int main() { double xp[1000],yp[1000] ; int n,q ; double P[2] ; swidth = 700 ; sheight = 700 ; G_init_graphics(swidth, sheight) ; G_rgb(0,0,0) ; G_clear() ; G_rgb(1,0,0) ; n = click_and_save(xp,yp) ; G_rgb(0,1,0) ; G_fill_polygon(xp,yp,n) ; while(1==1){ G_wait_click(P) ; if(P[1] < 40){ break; } int r = in_out(xp,yp,n,P); if(r==1){ G_rgb(1,0,0); }else{ G_rgb(0,0,1) ; } G_fill_circle(P[0],P[1],2) ; } q = G_wait_key() ; }
int main() { double j ; char q ; G_init_graphics(601, 601) ; // the original design was for a 400x400 // window and the object is centered on 200,200 // so we recenter it and make it larger translate(-200, -200) ; scale(2.0) ; translate(300, 300) ; j = 0 ; while (j < 100) { G_rgb(0,0,0) ; G_clear() ; G_rgb(0, 0.5, 1) ; G_fill_polygon(x,y,n) ; G_rgb(1, 1, 0) ; G_polygon(x,y,n) ; // q = G_wait_key() ; G_display_image() ; usleep(25000) ; // microseconds translate(-300, -300) ; scale(0.95) ; rotate(4) ; translate(300, 300) ; j=j+1 ; } G_rgb(1,0,0) ; G_fill_circle(300,300, 50) ; q = G_wait_key() ; }
int main() // this tests clipping of polygon to convex window //prefix -p == polygon; prefix -w == window { int pn, wn ; double pt[2], u, v, q ; double px[100] = { 70, 460, 400} ; double py[100] = { 350, 25, 550} ; pn = 3 ; double wx[100] = { 100, 600, 550, 150} ; double wy[100] = { 150, 200, 450, 500} ; wn = 4 ; srand48(100) ; G_init_graphics (700, 700) ; G_rgb (0, 0, 0) ; G_clear() ; G_rgb (1, 0, 0) ; G_polygon(wx, wy, wn) ; G_rgb (0, 0, 1) ; G_polygon(px, py, pn) ; q = G_wait_key() ; pn = Clip_Polygon_Against_Convex_Window (px, py, pn, wx, wy, wn) ; G_rgb (1, 1, 0) ; for (int i = 0; i < pn; i++) { G_fill_circle(px[i], py[i], 2); printf("x:%.2lf, y:%.2lf\n", px[i], py[i]); } G_fill_polygon(px, py, pn) ; q = G_wait_key() ; }
int main () { char prefix[100], sequence_name[100] ; int s,e,i ; double f ; printf("enter prefix name ") ; scanf("%s",prefix) ; printf("enter starting integer ") ; scanf("%d",&s) ; printf("enter ending integer ") ; scanf("%d",&e) ; /* printf("\n") ; for (i = s ; i <= e ; i++) { sprintf(sequence_name, "%s%04d.xwd", prefix, i) ; printf("%s\n",sequence_name) ; } */ G_init_graphics(400,400) ; for (i = s ; i <= e ; i++) { G_rgb(0,0,0) ; G_clear() ; f = 1.0*i/(e - s + 1) ; G_rgb(1,f,0) ; G_fill_circle(200,200,i) ; sprintf(sequence_name, "%s%04d.xwd", prefix, i) ; G_save_image_to_file(sequence_name) ; } G_close() ; }
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] ; } }
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") ; }