// // FUNÇÃO QUE CALCULA A ÁREA DE UM POLÍGONO // // Para o Trabalho de Programação - III // // Professor Márcio Santi. // ----------------------------------------------------------------------- // // Essa função calcula a área de um poligono considerando que a ordem dos // pontos que estão sendo passados para a função se dá no sentido horário. // Portanto se forem passados os pontos no sentido anti-horário, a rotina // não vai funcionar. // // Para o trabalho de vcs esses parâmetros não precisam ser passados, já // que esses serão na realidade atributos da classe. // // #include #include struct pto {double x, y;}; double _polyarea( pto *poly, int n ) { double area; /* enclosed polygon area */ int i; /* loop counter */ /* Compute area assuming that polygon is in clockwise order */ area = 0.0; for( i = 2; i < n; i++ ) { area += (poly[i ].x - poly[0].x) * (poly[i-1].y - poly[0].y) - (poly[i ].y - poly[0].y) * (poly[i-1].x - poly[0].x); } area = area /= 2.0; area = (double)fabs( (double)area ); return area; } // Função Principal Para testar a Função _polyarea: main() { // pto polygon[4] = {{0.0,0.0},{0.0,1.0},{1.0,1.0},{1.0,0.0}}; // pto polygon[3] = {{0.0,0.0},{0.0,1.0},{1.0,1.0}}; pto polygon[5] = {{0.0,0.0},{0.0,2.0},{1.0,2.0},{2.0,1.0},{1.0,0.0}}; double area = _polyarea(polygon,5); printf("area = %lf\n", area); }