long radiosity_converged(long process_id) { float prev_total, current_total ; float difference ; Rgb rad ; /* Check radiosity value */ prev_total = global->prev_total_energy.r + global->prev_total_energy.g + global->prev_total_energy.b ; current_total = global->total_energy.r + global->total_energy.g + global->total_energy.b ; /* Compute difference from the previous iteration */ prev_total += 1.0e-4 ; difference = fabs( (current_total / prev_total) - (float)1.0 ) ; if( verbose_mode ) { rad = global->total_energy ; rad.r /= global->total_patch_area ; rad.g /= global->total_patch_area ; rad.b /= global->total_patch_area ; printf( "Total energy: " ) ; print_rgb( &global->total_energy ) ; printf( "Average radiosity:" ) ; print_rgb( &rad ) ; printf( "Difference %.2f%%\n", difference * 100.0 ) ; } if( difference <= Energy_epsilon ) return( 1 ) ; else return( 0 ) ; }
static void print_colors(gradient *g, modes mode) { int i; if(mode == WEBKIT) { if(g->colors[0].a == 255) printf("from(#%02x%02x%02x), to(#%02x%02x%02x)", g->colors[0].r, g->colors[0].g, g->colors[0].b, g->colors[g->ncolors-1].r, g->colors[g->ncolors-1].g, g->colors[g->ncolors-1].b); else printf("from(rgba(%i,%i,%i,%.3g)), to(rgba(%i,%i,%i,%.3g))", g->colors[0].r, g->colors[0].g, g->colors[0].b, decimal2ratio(g->colors[0].a), g->colors[g->ncolors-1].r, g->colors[g->ncolors-1].g, g->colors[g->ncolors-1].b, decimal2ratio(g->colors[g->ncolors-1].a)); for(i=1; i<g->ncolors-1; i++) { if(g->colors[i].a == 255) printf(", color-stop(%u%%, #%02x%02x%02x)", g->colors[i].pos, g->colors[i].r, g->colors[i].g, g->colors[i].b); else printf(", color-stop(%u%%, rgba(%i,%i,%i,%.3g))", g->colors[i].pos, g->colors[i].r, g->colors[i].g, g->colors[i].b, decimal2ratio(g->colors[i].a)); } } else if(mode == YUI3) { for(i=0; i<g->ncolors; i++) { printf("\t\t\t{ color: \""); if(g->colors[i].a == 255) print_rgb(g->colors[i]); else print_rgba(g->colors[i]); printf("\""); if(g->colors[i].pos != -1) printf(", offset: %0.2f", (float)g->colors[i].pos/100); printf(" }"); if(i<g->ncolors-1) printf(","); printf("\n"); } } else { if(g->colors[0].a == 255) print_rgb(g->colors[0]); else print_rgba(g->colors[0]); if(g->colors[0].pos != -1) printf(" %u%%", g->colors[0].pos); for(i=1; i<g->ncolors; i++) { printf(", "); if(g->colors[i].a == 255) print_rgb(g->colors[i]); else print_rgba(g->colors[i]); if(g->colors[i].pos != -1) printf(" %u%%", g->colors[i].pos); } } }
void print_element(Element *elem, long process_id) { printf( "Element (%ld)\n", (long)elem ) ; print_point( &elem->ev1->p ) ; print_point( &elem->ev2->p ) ; print_point( &elem->ev3->p ) ; printf( "Radiosity:" ) ; print_rgb( &elem->rad ) ; }