/* poly_area.c compute area of a closed polygon */ /* sailors algorithm */ /* sum signed areas of trapezoids */ #include int main(int argc, char *argv[]) { float x1, y1, x2, y2; /* read points */ float dx; /* difference x2-x1 */ float area, da; printf("poly_area.c running \n"); area = 0.0; /* read data, closed polygon, last point is first point */ scanf("%f %f", &x1, &y1); printf("data x1=%8.5f, y1=%8.5f \n", x1, y1); y1 = y1+100.0; /* y's must be positive */ while(1) { scanf("%f %f", &x2, &y2); if(feof(stdin)) break; printf("data x2=%8.5f, y2=%8.5f \n", x2, y2); y2 = y2+100.0; /* compute area */ dx = x2-x1; /* determines sign of da */ da = dx*(y1+y2)/2.0; /* area of trapezoid */ area = area + da; printf("dx=%g, da=%g, area=%g \n", dx, da, area); x1 = x2; y1 = y2; } printf("\n"); return 0; } /* end poly_area */