static void start_of_year_update (void) { int u; sustainability_test (); pollution_deaths_history -= pollution_deaths_history / 100.0; starve_deaths_history -= starve_deaths_history / 100.0; unemployed_history -= unemployed_history / 100.0; u = count_groups (GROUP_UNIVERSITY); if (u > 0) { university_intake_rate = (count_groups (GROUP_SCHOOL) * 20) / u; if (university_intake_rate > 100) university_intake_rate = 100; } else { university_intake_rate = 50; } map_power_grid(); }
NCF1* NCF1::group(unsigned int index) const { std::map<std::string, NCF1* >::iterator it; if (index > count_groups()) { it = m_p_groups.end(); it--; } else { for (it = m_p_groups.begin(); (it != m_p_groups.end()) && --index ; it++); } return it->second; }
dstring_t *haplo_split(GapIO *io, snp_t *snp, int nsnps, int verbose, double min_score, int two_pass, int fast_mode, double c_offset, int max_sets) { graph *g; edge *e; dstring_t *ds; verbosity = verbose; g = graph_from_snps(io, snp, nsnps, c_offset); if (verbosity >= 3) print_matrix(g); graph_add_edges(g); graph_calc_chimeric_scores(g); graph_calc_link_scores(g, 1); if (verbosity >= 3) graph_print(g, 0); if (verbosity) puts("Merging graph nodes"); while ((e = best_edge(g)) && (e->linkage_score > min_score)) { if (verbosity >= 1) { putchar('.'); fflush(stdout); } merge_node(g, e); graph_calc_link_scores(g, fast_mode ? 0 : 1); if (verbosity >= 4) { print_matrix(g); graph_print(g, 1); } } if (verbosity >= 1) puts(""); /* graph_print(g, 1); */ if (two_pass) { /* Add fake zero-score edges if we want just 2-haplotypes */ add_zero_edges(g); graph_calc_link_scores(g, 1); if (verbosity >= 4) graph_print(g, 1); puts("===pass 2==="); while ((e = best_edge(g)) && (e->linkage_score > min_score)) { merge_node(g, e); graph_calc_link_scores(g, fast_mode ? 0 : 1); /* graph_print(g, 1); */ } /* graph_print(g, 1); */ } /* Force number of groups to be X? */ if (max_sets) { int ngroups = count_groups(g); add_zero_edges(g); for (; ngroups > max_sets; ngroups--) { e = best_edge(g); if (!e) { printf("Bailed out as no edge connecting groups\n"); break; } merge_node(g, e); graph_calc_link_scores(g, fast_mode ? 0 : 1); } } /* print_groups(g); */ ds = list_groups(g); graph_destroy(g); return ds; }
void load_city_2(char *cname) { int i, x, y, p; int dumbint = 0; int num_pbars, pbar_data_size; int pbar_tmp; int dummy; gzFile gzfile; char s[512]; clear_game(); gzfile = gzopen(cname, "rb"); if (gzfile == NULL) { printf(_("Can't open <%s> (gzipped)"), cname); do_error("Can't open it!"); } sscanf(gzgets(gzfile, s, 256), "%d", &ldsv_version); if (ldsv_version < WATERWELL_V2) { gzclose(gzfile); load_city_old( cname ); /* Fix desert frontier for old saved games and scenarios */ desert_frontier(0, 0, WORLD_SIDE_LEN, WORLD_SIDE_LEN); return; } fprintf(stderr, " ldsv_version = %i \n", ldsv_version); use_waterwell = true; init_pbars(); num_pbars = NUM_PBARS; pbar_data_size = PBAR_DATA_SIZE; init_inventory(); print_time_for_year(); // Easier debugging from saved game: #Line = 100 x + y + 1 (first line = ldsv_version) for (x = 0; x < WORLD_SIDE_LEN; x++) { for (y = 0; y < WORLD_SIDE_LEN; y++) { gzgets(gzfile, s, 512); // TY po fl cr or i1 i2 i3 i4 i5 i6 i7 PL al ec ws gp wa wp ww wn g1 g2 g3 g4 DA TK AN d4 d5 d6 d7 d8 d9 sscanf(s, "%hi %d %i %hu %hu %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d" , &MP_TYPE(x, y) , &MP_INFO(x, y).population , &MP_INFO(x, y).flags , &MP_INFO(x, y).coal_reserve , &MP_INFO(x, y).ore_reserve , &MP_INFO(x, y).int_1 , &MP_INFO(x, y).int_2 , &MP_INFO(x, y).int_3 , &MP_INFO(x, y).int_4 , &MP_INFO(x, y).int_5 , &MP_INFO(x, y).int_6 , &MP_INFO(x, y).int_7 , &MP_POL(x, y) , &ground[x][y].altitude , &ground[x][y].ecotable , &ground[x][y].wastes , &ground[x][y].pollution , &ground[x][y].water_alt , &ground[x][y].water_pol , &ground[x][y].water_wast , &ground[x][y].water_next , &ground[x][y].int1 , &ground[x][y].int2 , &ground[x][y].int3 , &ground[x][y].int4 , &MP_DATE(x,y) // d1 = date of built , &MP_TECH(x,y) // d2 = tech at build time , &MP_ANIM(x,y) // d3 = animation_time (see reset_animation_time mess :) , &dumbint // d4 could be image index for smooth animation, cf windmill anim_tile , &dumbint // d5 percentage of activity to choose family of pic , &dumbint // d6 , &dumbint // d7 , &dumbint // d8 , &dumbint // d9 ); if (get_group_of_type(MP_TYPE(x, y)) == GROUP_MARKET) inventory(x, y); } } set_map_groups(); sscanf(gzgets(gzfile, s, 256), "%d", &main_screen_originx); sscanf(gzgets(gzfile, s, 256), "%d", &main_screen_originy); sscanf(gzgets(gzfile, s, 256), "%d", &total_time); for (x = 0; x < MAX_NUMOF_SUBSTATIONS; x++) { sscanf(gzgets(gzfile, s, 256), "%d", &substationx[x]); sscanf(gzgets(gzfile, s, 256), "%d", &substationy[x]); } sscanf(gzgets(gzfile, s, 256), "%d", &numof_substations); for (x = 0; x < MAX_NUMOF_MARKETS; x++) { sscanf(gzgets(gzfile, s, 256), "%d", &marketx[x]); sscanf(gzgets(gzfile, s, 256), "%d", &markety[x]); } sscanf(gzgets(gzfile, s, 256), "%d", &numof_markets); sscanf(gzgets(gzfile, s, 256), "%d", &people_pool); sscanf(gzgets(gzfile, s, 256), "%o", &total_money); sscanf(gzgets(gzfile, s, 256), "%d", &income_tax_rate); sscanf(gzgets(gzfile, s, 256), "%d", &coal_tax_rate); sscanf(gzgets(gzfile, s, 256), "%d", &dole_rate); sscanf(gzgets(gzfile, s, 256), "%d", &transport_cost_rate); sscanf(gzgets(gzfile, s, 256), "%d", &goods_tax_rate); sscanf(gzgets(gzfile, s, 256), "%d", &export_tax); sscanf(gzgets(gzfile, s, 256), "%d", &export_tax_rate); sscanf(gzgets(gzfile, s, 256), "%d", &import_cost); sscanf(gzgets(gzfile, s, 256), "%d", &import_cost_rate); sscanf(gzgets(gzfile, s, 256), "%d", &tech_level); sscanf(gzgets(gzfile, s, 256), "%d", &tpopulation); sscanf(gzgets(gzfile, s, 256), "%d", &tstarving_population); sscanf(gzgets(gzfile, s, 256), "%d", &tunemployed_population); sscanf(gzgets(gzfile, s, 256), "%d", &x); /* waste_goods obsolete */ sscanf(gzgets(gzfile, s, 256), "%d", &power_made); sscanf(gzgets(gzfile, s, 256), "%d", &power_used); sscanf(gzgets(gzfile, s, 256), "%d", &coal_made); sscanf(gzgets(gzfile, s, 256), "%d", &coal_used); sscanf(gzgets(gzfile, s, 256), "%d", &goods_made); sscanf(gzgets(gzfile, s, 256), "%d", &goods_used); sscanf(gzgets(gzfile, s, 256), "%d", &ore_made); sscanf(gzgets(gzfile, s, 256), "%d", &ore_used); sscanf(gzgets(gzfile, s, 256), "%d", &dummy); /* &diff_old_population */ /* Update variables calculated from those above */ housed_population = tpopulation / ((total_time % NUMOF_DAYS_IN_MONTH) + 1); /* Get size of monthgraph array */ sscanf(gzgets(gzfile, s, 256), "%d", &i); for (x = 0; x < i; x++) { /* If more entries in file than will fit on screen, then we need to skip past them. */ if (x >= monthgraph_size) { sscanf(gzgets(gzfile, s, 256), "%d", &dummy); /* &monthgraph_pop[x] */ sscanf(gzgets(gzfile, s, 256), "%d", &dummy); /* &monthgraph_starve[x] */ sscanf(gzgets(gzfile, s, 256), "%d", &dummy); /* &monthgraph_nojobs[x] */ sscanf(gzgets(gzfile, s, 256), "%d", &dummy); /* &monthgraph_ppool[x] */ } else { sscanf(gzgets(gzfile, s, 256), "%d", &monthgraph_pop[x]); sscanf(gzgets(gzfile, s, 256), "%d", &monthgraph_starve[x]); sscanf(gzgets(gzfile, s, 256), "%d", &monthgraph_nojobs[x]); sscanf(gzgets(gzfile, s, 256), "%d", &monthgraph_ppool[x]); } } /* If screen bigger than number of entries in file, pad with zeroes */ while (x < monthgraph_size) { monthgraph_pop[x] = 0; monthgraph_starve[x] = 0; monthgraph_nojobs[x] = 0; monthgraph_ppool[x] = 0; x++; } sscanf(gzgets(gzfile, s, 256), "%d", &rockets_launched); sscanf(gzgets(gzfile, s, 256), "%d", &rockets_launched_success); sscanf(gzgets(gzfile, s, 256), "%d", &coal_survey_done); for (x = 0; x < pbar_data_size; x++) { for (p = 0; p < num_pbars; p++) { sscanf(gzgets(gzfile, s, 256), "%d", &(pbar_tmp)); update_pbar(p, pbar_tmp, 1); } } for (p = 0; p < num_pbars; p++) pbars[p].data_size = pbar_data_size; for (p = 0; p < num_pbars; p++) { sscanf(gzgets(gzfile, s, 256), "%d", &(pbars[p].oldtot)); sscanf(gzgets(gzfile, s, 256), "%d", &(pbars[p].diff)); } sscanf(gzgets(gzfile, s, 256), "%d", &cheat_flag); sscanf(gzgets(gzfile, s, 256), "%d", &total_pollution_deaths); sscanf(gzgets(gzfile, s, 256), "%f", &pollution_deaths_history); sscanf(gzgets(gzfile, s, 256), "%d", &total_starve_deaths); sscanf(gzgets(gzfile, s, 256), "%f", &starve_deaths_history); sscanf(gzgets(gzfile, s, 256), "%d", &total_unemployed_years); sscanf(gzgets(gzfile, s, 256), "%f", &unemployed_history); sscanf(gzgets(gzfile, s, 256), "%d", &max_pop_ever); sscanf(gzgets(gzfile, s, 256), "%d", &total_evacuated); sscanf(gzgets(gzfile, s, 256), "%d", &total_births); for (x = 0; x < NUMOF_MODULES; x++) sscanf(gzgets(gzfile, s, 256), "%d", &(module_help_flag[x])); sscanf(gzgets(gzfile, s, 256), "%128s", given_scene); if (strncmp(given_scene, "dummy", 5) == 0 || strlen(given_scene) < 3) given_scene[0] = 0; sscanf(gzgets(gzfile, s, 256), "%128s", s); if (strncmp(given_scene, "dummy", 5) != 0) sscanf(s, "%d", &highest_tech_level); else highest_tech_level = 0; gzgets(gzfile, s, 200); if (sscanf (s, "sust %d %d %d %d %d %d %d %d %d %d", &sust_dig_ore_coal_count, &sust_port_count, &sust_old_money_count, &sust_old_population_count, &sust_old_tech_count, &sust_fire_count, &sust_old_money, &sust_old_population, &sust_old_tech, &sustain_flag) == 10) { sust_dig_ore_coal_tip_flag = sust_port_flag = 1; } else sustain_flag = sust_dig_ore_coal_count = sust_port_count = sust_old_money_count = sust_old_population_count = sust_old_tech_count = sust_fire_count = sust_old_money = sust_old_population = sust_old_tech = 0; gzgets(gzfile, s, 80); sscanf(s, "arid %d %d", &global_aridity, &global_mountainity); gzclose(gzfile); /* FIXME: AL1 this is initialisation stuff, should go elsewhere */ // Engine stuff if (tech_level > MODERN_WINDMILL_TECH) modern_windmill_flag = 1; numof_shanties = count_groups(GROUP_SHANTY); numof_communes = count_groups(GROUP_COMMUNE); /* set up the university intake. */ x = count_groups(GROUP_UNIVERSITY); if (x > 0) { university_intake_rate = (count_groups(GROUP_SCHOOL) * 20) / x; if (university_intake_rate > 100) university_intake_rate = 100; } else university_intake_rate = 50; print_total_money(); //reset_animation_times //get alt_min, alt_max alt_min = 2000000000; alt_max = -alt_min; for ( y = 0; y < WORLD_SIDE_LEN; y++){ for ( x = 0; x < WORLD_SIDE_LEN; x++) { MP_ANIM(x,y) = 0; if (MP_GROUP(x, y) == GROUP_FIRE){ MP_INFO(x, y).int_3 = 0; } if (alt_min > ALT(x,y)){ alt_min = ALT(x,y); } if (alt_max < ALT(x,y)){ alt_max = ALT(x,y); } } } alt_step = (alt_max - alt_min) /10; map_power_grid(true); /* WCK: Is this safe to do here? * AL1: No, in NG_1.1 * In case of error message with ok_dial_box * the dialog cannot appear because the screen * is not set up => crash. * FIXME: move all initialisation elsewhere, in * engine.cpp or simulate.cpp. */ // UI stuff if (main_screen_originx > WORLD_SIDE_LEN - getMainWindowWidth() / 16 - 1) main_screen_originx = WORLD_SIDE_LEN - getMainWindowWidth() / 16 - 1; if (main_screen_originy > WORLD_SIDE_LEN - getMainWindowHeight() / 16 - 1) main_screen_originy = WORLD_SIDE_LEN - getMainWindowHeight() / 16 - 1; unhighlight_module_button(selected_module); selected_module = sbut[7]; /* 7 is track. Watch out though! */ highlight_module_button(selected_module); set_selected_module(CST_TRACK_LR); connect_transport(1, 1, WORLD_SIDE_LEN - 2, WORLD_SIDE_LEN - 2); /* Fix desert frontier for old saved games and scenarios */ desert_frontier(0, 0, WORLD_SIDE_LEN, WORLD_SIDE_LEN); }
void load_city (char *cname) { unsigned long q; int i, x, y, z, n, p; int num_pbars, pbar_data_size; int pbar_tmp; int dummy; gzFile gzfile; char s[256]; gzfile = gzopen( cname, "rb" ); if ( gzfile == NULL) { printf (_("Can't open <%s> (gzipped)"), cname); do_error ("Can't open it!"); } /* Add version to shared global variables for playing/saving games without waterwell */ sscanf( gzgets( gzfile, s, 256 ), "%d", &ldsv_version); if (ldsv_version < MIN_LOAD_VERSION) { ok_dial_box ("too-old.mes", BAD, 0L); gzclose( gzfile ); return; } fprintf(stderr," ldsv_version = %i \n", ldsv_version); if (ldsv_version < MIN_WATERWELL_VERSION) { /* ok_dial_box ("no-waterwell.mes", GOOD, 0L);*/ use_waterwell=false; } else { use_waterwell=true; /* needed until it is written in the saved file * in case of load after having played an old game */ } init_pbars(); num_pbars = NUM_PBARS; pbar_data_size = PBAR_DATA_SIZE; init_inventory(); print_time_for_year(); q = (unsigned long) sizeof (Map_Point_Info); prog_box (_("Loading scene"), 0); for (x = 0; x < WORLD_SIDE_LEN; x++) { for (y = 0; y < WORLD_SIDE_LEN; y++) { for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).population) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).flags) + z) = n; } for (z = 0; z < sizeof(unsigned short); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).coal_reserve) + z) = n; } for (z = 0; z < sizeof(unsigned short); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).ore_reserve) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_1) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_2) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_3) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_4) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_5) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_6) + z) = n; } for (z = 0; z < sizeof(int); z++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_7) + z) = n; } sscanf( gzgets( gzfile, s, 256 ), "%d", &n); MP_POL(x,y) = (unsigned short) n; sscanf( gzgets( gzfile, s, 256 ), "%d", &n); MP_TYPE(x,y) = (short) n; if (get_group_of_type(MP_TYPE(x,y)) == GROUP_MARKET) inventory(x,y); } if (((93 * x) / WORLD_SIDE_LEN) % 3 == 0) prog_box ("", (93 * x) / WORLD_SIDE_LEN); } check_endian (); set_map_groups (); sscanf( gzgets( gzfile, s, 256 ), "%d", &main_screen_originx); sscanf( gzgets( gzfile, s, 256 ), "%d", &main_screen_originy); if (main_screen_originx > WORLD_SIDE_LEN - getMainWindowWidth() / 16 - 1) main_screen_originx = WORLD_SIDE_LEN - getMainWindowWidth() / 16 - 1; if (main_screen_originy > WORLD_SIDE_LEN - getMainWindowHeight() / 16 - 1) main_screen_originy = WORLD_SIDE_LEN - getMainWindowHeight() / 16 - 1; sscanf( gzgets( gzfile, s, 256 ), "%d", &total_time); if (ldsv_version <= MM_MS_C_VER) i = OLD_MAX_NUMOF_SUBSTATIONS; else i = MAX_NUMOF_SUBSTATIONS; for (x = 0; x < i; x++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &substationx[x]); sscanf( gzgets( gzfile, s, 256 ), "%d", &substationy[x]); } prog_box ("", 92); sscanf( gzgets( gzfile, s, 256 ), "%d", &numof_substations); if (ldsv_version <= MM_MS_C_VER) i = OLD_MAX_NUMOF_MARKETS; else i = MAX_NUMOF_MARKETS; for (x = 0; x < i; x++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &marketx[x]); sscanf( gzgets( gzfile, s, 256 ), "%d", &markety[x]); } prog_box ("", 94); sscanf( gzgets( gzfile, s, 256 ), "%d", &numof_markets); sscanf( gzgets( gzfile, s, 256 ), "%d", &people_pool); sscanf( gzgets( gzfile, s, 256 ), "%d", &total_money); sscanf( gzgets( gzfile, s, 256 ), "%d", &income_tax_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &coal_tax_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &dole_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &transport_cost_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &goods_tax_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &export_tax); sscanf( gzgets( gzfile, s, 256 ), "%d", &export_tax_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &import_cost); sscanf( gzgets( gzfile, s, 256 ), "%d", &import_cost_rate); sscanf( gzgets( gzfile, s, 256 ), "%d", &tech_level); if (tech_level > MODERN_WINDMILL_TECH) modern_windmill_flag = 1; sscanf( gzgets( gzfile, s, 256 ), "%d", &tpopulation); sscanf( gzgets( gzfile, s, 256 ), "%d", &tstarving_population); sscanf( gzgets( gzfile, s, 256 ), "%d", &tunemployed_population); sscanf( gzgets( gzfile, s, 256 ), "%d", &x); /* waste_goods obsolete */ sscanf( gzgets( gzfile, s, 256 ), "%d", &power_made); sscanf( gzgets( gzfile, s, 256 ), "%d", &power_used); sscanf( gzgets( gzfile, s, 256 ), "%d", &coal_made); sscanf( gzgets( gzfile, s, 256 ), "%d", &coal_used); sscanf( gzgets( gzfile, s, 256 ), "%d", &goods_made); sscanf( gzgets( gzfile, s, 256 ), "%d", &goods_used); sscanf( gzgets( gzfile, s, 256 ), "%d", &ore_made); sscanf( gzgets( gzfile, s, 256 ), "%d", &ore_used); sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &diff_old_population */ /* Update variables calculated from those above */ housed_population = tpopulation / NUMOF_DAYS_IN_MONTH; prog_box ("", 96); /* Get size of monthgraph array */ if (ldsv_version <= MG_C_VER) { i = 120; } else { sscanf( gzgets( gzfile, s, 256 ), "%d", &i); } for (x = 0; x < i; x++) { /* If more entries in file than will fit on screen, then we need to skip past them. */ if (x >= monthgraph_size) { sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &monthgraph_pop[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &monthgraph_starve[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &monthgraph_nojobs[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &monthgraph_ppool[x] */ } else { sscanf( gzgets( gzfile, s, 256 ), "%d", &monthgraph_pop[x]); sscanf( gzgets( gzfile, s, 256 ), "%d", &monthgraph_starve[x]); sscanf( gzgets( gzfile, s, 256 ), "%d", &monthgraph_nojobs[x]); sscanf( gzgets( gzfile, s, 256 ), "%d", &monthgraph_ppool[x]); } /* If our save file is old, skip past obsolete diffgraph entries */ if (ldsv_version <= MG_C_VER) { sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &diffgraph_power[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &diffgraph_coal[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &diffgraph_goods[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &diffgraph_ore[x] */ sscanf( gzgets( gzfile, s, 256 ), "%d", &dummy); /* &diffgraph_population[x] */ } } /* If screen bigger than number of entries in file, pad with zeroes */ while (x < monthgraph_size) { monthgraph_pop[x] = 0; monthgraph_starve[x] = 0; monthgraph_nojobs[x] = 0; monthgraph_ppool[x] = 0; x++; } prog_box ("", 98); sscanf( gzgets( gzfile, s, 256 ), "%d", &rockets_launched); sscanf( gzgets( gzfile, s, 256 ), "%d", &rockets_launched_success); sscanf( gzgets( gzfile, s, 256 ), "%d", &coal_survey_done); for (x = 0; x < pbar_data_size; x++) { for (p = 0; p < num_pbars; p++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &(pbar_tmp)); update_pbar(p,pbar_tmp,1); /* sscanf( gzgets( gzfile, s, 256 ), "%d", &(pbars[p].data[x])); */ } } for (p = 0; p < num_pbars; p++) pbars[p].data_size = pbar_data_size; prog_box ("", 99); for (p = 0; p < num_pbars; p++) { sscanf( gzgets( gzfile, s, 256 ), "%d", &(pbars[p].oldtot)); sscanf( gzgets( gzfile, s, 256 ), "%d", &(pbars[p].diff)); } sscanf( gzgets( gzfile, s, 256 ), "%d", &cheat_flag); sscanf( gzgets( gzfile, s, 256 ), "%d", &total_pollution_deaths); sscanf( gzgets( gzfile, s, 256 ), "%f", &pollution_deaths_history); sscanf( gzgets( gzfile, s, 256 ), "%d", &total_starve_deaths); sscanf( gzgets( gzfile, s, 256 ), "%f", &starve_deaths_history); sscanf( gzgets( gzfile, s, 256 ), "%d", &total_unemployed_years); sscanf( gzgets( gzfile, s, 256 ), "%f", &unemployed_history); sscanf( gzgets( gzfile, s, 256 ), "%d", &max_pop_ever); sscanf( gzgets( gzfile, s, 256 ), "%d", &total_evacuated); sscanf( gzgets( gzfile, s, 256 ), "%d", &total_births); for (x = 0; x < NUMOF_MODULES; x++) sscanf( gzgets( gzfile, s, 256 ), "%d", &(module_help_flag[x])); sscanf( gzgets( gzfile, s, 256 ), "%d", &x); /* just dummy reads */ sscanf( gzgets( gzfile, s, 256 ), "%d", &x); /* for backwards compatibility. */ /* 10 dummy strings, for missed out things, have been put in save. */ /* Input from this point uses them. */ /* XXX: WCK: Huh? Missed out things? */ sscanf( gzgets( gzfile, s, 256 ), "%128s", given_scene); if (strncmp (given_scene, "dummy", 5) == 0 || strlen (given_scene) < 3) given_scene[0] = 0; sscanf( gzgets( gzfile, s, 256 ), "%128s", s); if (strncmp (given_scene, "dummy", 5) != 0) sscanf (s, "%d", &highest_tech_level); else highest_tech_level = 0; gzgets( gzfile, s, 80 ); /* this is the CR */ if (sscanf (s, "sust %d %d %d %d %d %d %d %d %d %d" ,&sust_dig_ore_coal_count, &sust_port_count ,&sust_old_money_count, &sust_old_population_count ,&sust_old_tech_count, &sust_fire_count ,&sust_old_money, &sust_old_population, &sust_old_tech ,&sustain_flag) == 10) { sust_dig_ore_coal_tip_flag = sust_port_flag = 1; /* GCS FIX: Check after loading file if screen is drawn OK */ /* draw_sustainable_window (); */ } else sustain_flag = sust_dig_ore_coal_count = sust_port_count = sust_old_money_count = sust_old_population_count = sust_old_tech_count = sust_fire_count = sust_old_money = sust_old_population = sust_old_tech = 0; if (use_waterwell == true) { } gzclose( gzfile ); numof_shanties = count_groups (GROUP_SHANTY); numof_communes = count_groups (GROUP_COMMUNE); prog_box ("", 100); /* set up the university intake. */ x = count_groups (GROUP_UNIVERSITY); if (x > 0) { university_intake_rate = (count_groups (GROUP_SCHOOL) * 20) / x; if (university_intake_rate > 100) university_intake_rate = 100; } else university_intake_rate = 50; /*Al1 : What is this ? This does nothing, the value are saved in MP_INFO.int_ * for (x = 0; x < WORLD_SIDE_LEN; x++) * for (y = 0; y < WORLD_SIDE_LEN; y++) * update_tech_dep (x, y); */ unhighlight_module_button (selected_module); selected_module = sbut[7]; /* 7 is track. Watch out though! */ highlight_module_button (selected_module); set_selected_module (CST_TRACK_LR); print_total_money (); reset_animation_times (); /* update tech dep for compatibility with old games */ for (x = 0; x < WORLD_SIDE_LEN; x++) for (y = 0; y < WORLD_SIDE_LEN; y++) { switch (MP_GROUP(x,y)) { case (GROUP_WINDMILL): MP_INFO(x,y).int_1 = (int)(WINDMILL_POWER + (((double) MP_INFO(x,y).int_2 * WINDMILL_POWER) / MAX_TECH_LEVEL)); break; case (GROUP_COAL_POWER): MP_INFO(x,y).int_1 = (int)(POWERS_COAL_OUTPUT + (((double) MP_INFO(x,y).int_4 * POWERS_COAL_OUTPUT) / MAX_TECH_LEVEL)); break; case (GROUP_SOLAR_POWER): MP_INFO(x,y).int_1 = (int)(POWERS_SOLAR_OUTPUT + (((double) MP_INFO(x,y).int_2 * POWERS_SOLAR_OUTPUT) / MAX_TECH_LEVEL)); break; } } map_power_grid(true); /* WCK: Is this safe to do here? * AL1: No, in NG_1.1 * In case of error message with ok_dial_box * the dialog cannot appear because the screen * is not set up => crash. * FIXME: move all initialisation elsewhere, in * engine.cpp or simulate.cpp. */ }
void load_city (char *cname) { unsigned long q; int i, x, y, z, n, p, ver; int num_pbars, pbar_data_size; int pbar_tmp; int dummy; FILE *ofile; char s[256]; if ((ofile = fopen_read_gzipped (cname)) == NULL) { printf (_("Can't open <%s> (gzipped)"), cname); do_error ("Can't open it!"); } fscanf (ofile, "%d", &ver); if (ver < MIN_LOAD_VERSION) { ok_dial_box ("too-old.mes", BAD, 0L); fclose_read_gzipped (ofile); return; } init_pbars(); num_pbars = NUM_PBARS; pbar_data_size = PBAR_DATA_SIZE; init_inventory(); print_time_for_year(); q = (unsigned long) sizeof (Map_Point_Info); prog_box (_("Loading scene"), 0); for (x = 0; x < WORLD_SIDE_LEN; x++) { for (y = 0; y < WORLD_SIDE_LEN; y++) { for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).population) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).flags) + z) = n; } for (z = 0; z < sizeof(unsigned short); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).coal_reserve) + z) = n; } for (z = 0; z < sizeof(unsigned short); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).ore_reserve) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_1) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_2) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_3) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_4) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_5) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_6) + z) = n; } for (z = 0; z < sizeof(int); z++) { fscanf (ofile, "%d", &n); *(((unsigned char *) &MP_INFO(x,y).int_7) + z) = n; } fscanf (ofile, "%d", &n); MP_POL(x,y) = (unsigned short) n; fscanf (ofile, "%d", &n); MP_TYPE(x,y) = (short) n; if (get_group_of_type(MP_TYPE(x,y)) == GROUP_MARKET) inventory(x,y); } if (((93 * x) / WORLD_SIDE_LEN) % 3 == 0) prog_box ("", (93 * x) / WORLD_SIDE_LEN); } check_endian (); set_map_groups (); fscanf (ofile, "%d", &main_screen_originx); fscanf (ofile, "%d", &main_screen_originy); if (main_screen_originx > WORLD_SIDE_LEN - scr.main_win.w / 16 - 1) main_screen_originx = WORLD_SIDE_LEN - scr.main_win.w / 16 - 1; if (main_screen_originy > WORLD_SIDE_LEN - scr.main_win.h / 16 - 1) main_screen_originy = WORLD_SIDE_LEN - scr.main_win.h / 16 - 1; fscanf (ofile, "%d", &total_time); if (ver <= MM_MS_C_VER) i = OLD_MAX_NUMOF_SUBSTATIONS; else i = MAX_NUMOF_SUBSTATIONS; for (x = 0; x < i; x++) { fscanf (ofile, "%d", &substationx[x]); fscanf (ofile, "%d", &substationy[x]); } prog_box ("", 92); fscanf (ofile, "%d", &numof_substations); if (ver <= MM_MS_C_VER) i = OLD_MAX_NUMOF_MARKETS; else i = MAX_NUMOF_MARKETS; for (x = 0; x < i; x++) { fscanf (ofile, "%d", &marketx[x]); fscanf (ofile, "%d", &markety[x]); } prog_box ("", 94); fscanf (ofile, "%d", &numof_markets); fscanf (ofile, "%d", &people_pool); fscanf (ofile, "%d", &total_money); fscanf (ofile, "%d", &income_tax_rate); fscanf (ofile, "%d", &coal_tax_rate); fscanf (ofile, "%d", &dole_rate); fscanf (ofile, "%d", &transport_cost_rate); fscanf (ofile, "%d", &goods_tax_rate); fscanf (ofile, "%d", &export_tax); fscanf (ofile, "%d", &export_tax_rate); fscanf (ofile, "%d", &import_cost); fscanf (ofile, "%d", &import_cost_rate); fscanf (ofile, "%d", &tech_level); if (tech_level > MODERN_WINDMILL_TECH) modern_windmill_flag = 1; fscanf (ofile, "%d", &tpopulation); fscanf (ofile, "%d", &tstarving_population); fscanf (ofile, "%d", &tunemployed_population); fscanf (ofile, "%d", &x); /* waste_goods obsolete */ fscanf (ofile, "%d", &power_made); fscanf (ofile, "%d", &power_used); fscanf (ofile, "%d", &coal_made); fscanf (ofile, "%d", &coal_used); fscanf (ofile, "%d", &goods_made); fscanf (ofile, "%d", &goods_used); fscanf (ofile, "%d", &ore_made); fscanf (ofile, "%d", &ore_used); fscanf (ofile, "%d", &dummy); /* &diff_old_population */ /* Update variables calculated from those above */ housed_population = tpopulation / NUMOF_DAYS_IN_MONTH; prog_box ("", 96); /* Get size of monthgraph array */ if (ver <= MG_C_VER) { i = 120; } else { fscanf (ofile, "%d", &i); } for (x = 0; x < i; x++) { /* If more entries in file than will fit on screen, then we need to skip past them. */ if (x >= monthgraph_size) { fscanf (ofile, "%d", &dummy); /* &monthgraph_pop[x] */ fscanf (ofile, "%d", &dummy); /* &monthgraph_starve[x] */ fscanf (ofile, "%d", &dummy); /* &monthgraph_nojobs[x] */ fscanf (ofile, "%d", &dummy); /* &monthgraph_ppool[x] */ } else { fscanf (ofile, "%d", &monthgraph_pop[x]); fscanf (ofile, "%d", &monthgraph_starve[x]); fscanf (ofile, "%d", &monthgraph_nojobs[x]); fscanf (ofile, "%d", &monthgraph_ppool[x]); } /* If our save file is old, skip past obsolete diffgraph entries */ if (ver <= MG_C_VER) { fscanf (ofile, "%d", &dummy); /* &diffgraph_power[x] */ fscanf (ofile, "%d", &dummy); /* &diffgraph_coal[x] */ fscanf (ofile, "%d", &dummy); /* &diffgraph_goods[x] */ fscanf (ofile, "%d", &dummy); /* &diffgraph_ore[x] */ fscanf (ofile, "%d", &dummy); /* &diffgraph_population[x] */ } } /* If screen bigger than number of entries in file, pad with zeroes */ while (x < monthgraph_size) { monthgraph_pop[x] = 0; monthgraph_starve[x] = 0; monthgraph_nojobs[x] = 0; monthgraph_ppool[x] = 0; x++; } prog_box ("", 98); fscanf (ofile, "%d", &rockets_launched); fscanf (ofile, "%d", &rockets_launched_success); fscanf (ofile, "%d", &coal_survey_done); for (x = 0; x < pbar_data_size; x++) { for (p = 0; p < num_pbars; p++) { fscanf (ofile, "%d", &(pbar_tmp)); update_pbar(p,pbar_tmp,1); /* fscanf (ofile, "%d", &(pbars[p].data[x])); */ } } for (p = 0; p < num_pbars; p++) pbars[p].data_size = pbar_data_size; prog_box ("", 99); for (p = 0; p < num_pbars; p++) { fscanf (ofile, "%d", &(pbars[p].oldtot)); fscanf (ofile, "%d", &(pbars[p].diff)); } fscanf (ofile, "%d", &cheat_flag); fscanf (ofile, "%d", &total_pollution_deaths); fscanf (ofile, "%f", &pollution_deaths_history); fscanf (ofile, "%d", &total_starve_deaths); fscanf (ofile, "%f", &starve_deaths_history); fscanf (ofile, "%d", &total_unemployed_years); fscanf (ofile, "%f", &unemployed_history); fscanf (ofile, "%d", &max_pop_ever); fscanf (ofile, "%d", &total_evacuated); fscanf (ofile, "%d", &total_births); for (x = 0; x < NUMOF_MODULES; x++) fscanf (ofile, "%d", &(module_help_flag[x])); fscanf (ofile, "%d", &x); /* just dummy reads */ fscanf (ofile, "%d", &x); /* for backwards compatibility. */ /* 10 dummy strings, for missed out things, have been put in save. */ /* Input from this point uses them. */ /* XXX: WCK: Huh? Missed out things? */ fscanf (ofile, "%128s", given_scene); if (strncmp (given_scene, "dummy", 5) == 0 || strlen (given_scene) < 3) given_scene[0] = 0; fscanf (ofile, "%128s", s); if (strncmp (given_scene, "dummy", 5) != 0) sscanf (s, "%d", &highest_tech_level); else highest_tech_level = 0; fgets (s, 80, ofile); /* this is the CR */ fgets (s, 80, ofile); if (sscanf (s, "sust %d %d %d %d %d %d %d %d %d %d" ,&sust_dig_ore_coal_count, &sust_port_count ,&sust_old_money_count, &sust_old_population_count ,&sust_old_tech_count, &sust_fire_count ,&sust_old_money, &sust_old_population, &sust_old_tech ,&sustain_flag) == 10) { sust_dig_ore_coal_tip_flag = sust_port_flag = 1; /* GCS FIX: Check after loading file if screen is drawn OK */ /* draw_sustainable_window (); */ } else sustain_flag = sust_dig_ore_coal_count = sust_port_count = sust_old_money_count = sust_old_population_count = sust_old_tech_count = sust_fire_count = sust_old_money = sust_old_population = sust_old_tech = 0; fclose_read_gzipped (ofile); numof_shanties = count_groups (GROUP_SHANTY); numof_communes = count_groups (GROUP_COMMUNE); prog_box ("", 100); /* set up the university intake. */ x = count_groups (GROUP_UNIVERSITY); if (x > 0) { university_intake_rate = (count_groups (GROUP_SCHOOL) * 20) / x; if (university_intake_rate > 100) university_intake_rate = 100; } else university_intake_rate = 50; for (x = 0; x < WORLD_SIDE_LEN; x++) { for (y = 0; y < WORLD_SIDE_LEN; y++) { update_tech_dep (x, y); } } unhighlight_module_button (selected_module); selected_module = sbut[7]; /* 7 is track. Watch out though! */ highlight_module_button (selected_module); set_selected_module (CST_TRACK_LR); print_total_money (); reset_animation_times (); map_power_grid (); /* WCK: Is this safe to do here? */ }
/* NUM_BINS * -------- * Input parameters: * numChans - number of channels in groupCol and qualCol * numBins - number of equal-sized bins desired * groupCol - the GROUPING column * qualCol - the QUALITY column * tabStops - array giving channels with tabs or stops */ int grp_do_num_bins(long numChans, long numBins, short *groupCol, short *qualCol, short *tabStops, dsErrList *errList){ long numTabStops, binWidth, numGroups; short isError = GRP_FALSE; int returnVal = GRP_SUCCESS; /* Check for obviously bad inputs */ if((numChans <= 0) || (numBins <= 0) || !groupCol || !qualCol || !tabStops){ if(errList) dsErrAdd(errList, dsDMGROUPBADPARAMERR, Accumulation, Generic); else err_msg("ERROR: At least one input parameter has an " "invalid value.\n"); return(GRP_ERROR); } numTabStops = count_bad_chans(tabStops, numChans); binWidth = (double) ((double) numChans - (double) numTabStops) / (double) numBins; if(!binWidth){ if(errList) dsErrAdd(errList, dsDMGROUPZEROWIDTHERR, Accumulation, Generic); else err_msg("WARNING: The calculated bin width rounds to " "zero.\nIt will be reset to 1."); binWidth = 1; returnVal = GRP_WARNING; } isError = grp_do_bin_width(numChans, binWidth, groupCol, qualCol, tabStops, errList); if(isError){ if(isError == GRP_ERROR) return(GRP_ERROR); else returnVal = GRP_WARNING; } numGroups = count_groups(groupCol, qualCol, numChans); /* More groups produced than requested? */ if(numGroups > numBins){ if(errList) dsErrAdd(errList, dsDMGROUPEXTRAGROUPSERR, Accumulation, Generic); else err_msg("WARNING: More groups produced than requested.\n"); returnVal = GRP_WARNING; } /* Fewer groups produced than requested? */ else if(numGroups < numBins){ if(errList) dsErrAdd(errList, dsDMGROUPTOOFEWGROUPSERR, Accumulation, Generic); else err_msg("ERROR: Fewer groups produced than requested.\n"); return(GRP_ERROR); } return(returnVal); }
int main(int argc, char **argv) { create_window("Original"); create_window("Result"); cvMoveWindow("Original", 10, 200); cvMoveWindow("Result", 20 + WND_WIDTH, 200); const char *optstr = "d"; int ch; while ((ch = getopt(argc, argv, optstr)) != EOF) { switch (ch) { case 'd': debug = 1; break; } } if ((argc - optind) > 2) { std::ofstream fWolf; std::ofstream fSpotCatalog; fWolf.open ("/Users/eduardo/Wolfs.txt"); fSpotCatalog.open ("/Users/eduardo/SpotCatalog.txt"); fSpotCatalog << "Image;Date;Spot Id;Lat;Lon;Area;Intensity Relative;Mag Avg;Mag Avg Pos;Mag Avg Neg;Sun Intensity Avg; Sun Intensity Max; Sun Intensity Min" << std::endl; for (int i = optind; i < argc; ++i) { IplImage *src = cvLoadImage(argv[i]); if (debug) cvShowImage("Original", src); IplImage *dst = detect_sunspots(src); blob_collection b = detectBlobs(dst); std::cout << "Found " << b.size() << " sunspots in image " << argv[i] << std::endl; //struct_sun sun = center_sun(src, debug); fitsToolMDIContinum oFitMDIcontinum; fitsToolMag oFitMag; oFitMDIcontinum.openFit(argv[i]); struct_sun sun; oFitMDIcontinum.sunPhysics(&sun); std::string date; oFitMDIcontinum.dateObs(date); std::cout << "SD X0 = " << sun.center.x << " Y0 = " << sun.center.y << " Radius = " << sun.radius << " Date:" << date << std::endl; group_sunspot_vector groups = count_groups(sun, b, debug? dst : NULL); std::cout << "groups found:" << groups.size() << std::endl; std::cout << "Wolf number " << b.size() + (groups.size() * 10) << " sunspots in image " << argv[i] << std::endl; double dIntensity; double dMin; double dMax; oFitMDIcontinum.sunMeanIntensity(&dIntensity, &dMin, &dMax); fWolf << argv[i] << ";"<< b.size() + (groups.size() * 10) << ";" << dMax << ";" << date << std::endl; oFitMag.openFit(argv[i]); blob_collection::iterator iter; int icnt = 0; for (iter = b.begin(); iter != b.end(); iter++) { double dMagAverage, dMagAveragePos, dMagAverageNeg, dArea, dIntensityAvg; oFitMag.magFieldAverage(iter->second.listPoints, &dMagAverage, &dMagAveragePos, &dMagAverageNeg); oFitMDIcontinum.Area(&(iter->second), &dArea); oFitMDIcontinum.IntensityAverage(iter->second.listPoints, &dIntensityAvg); std::cout << "/t" << iter->first << "| Center:" << iter->second.getLatDeg() << "," << iter->second.getLonDeg() << "| Points : " << iter->second.listPoints.size() << "| AREA : " << dArea << "| Intensidade " << dIntensityAvg / dIntensity << "| Mag:" << dMagAverage << " : " << dMagAveragePos << " : " << dMagAverageNeg << std::endl; fSpotCatalog << argv[i] << ";" << date << ";" << icnt << ";" << iter->second.getLatDeg() << ";" << iter->second.getLonDeg() << ";" << dArea << ";" << dIntensityAvg / dIntensity << ";" << dMagAverage << ";" << dMagAveragePos << ";" << dMagAverageNeg << ";" << dIntensity << ";" << dMax << ";" << dMin << std::endl;; ++icnt; } oFitMDIcontinum.closeFit(); oFitMag.closeFit(); cvShowImage("Original", src); cvShowImage("Result", dst); /*double dIntensity; openFit(argv[i]); sunMeanIntensity(&dIntensity); std::cout << "Sun Intensity: " << dIntensity; */ oFitMDIcontinum.closeFit(); cvWaitKey(5); cvReleaseImage(&src); cvReleaseImage(&dst); } fWolf.close(); fSpotCatalog.close(); } else { IplImage *src = cvLoadImage(argv[optind]); if (debug) cvShowImage("Original", src); IplImage *dst = detect_sunspots(src); blob_collection b = detectBlobs(dst); std::cout << "Found " << b.size() << " sunspots in image " << argv[optind] << std::endl; fitsToolMDIContinum oFitMDIcontinum; fitsToolMag oFitMag; //struct_sun sun = center_sun(src, debug); oFitMDIcontinum.openFit(argv[optind]); struct_sun sun; oFitMDIcontinum.sunPhysics(&sun); std::string date; oFitMDIcontinum.dateObs(date); std::cout << "SDO X0 = " << sun.center.x << " Y0 = " << sun.center.y << " Radius = " << sun.radius << " Date:" << date << std::endl; group_sunspot_vector groups = count_groups(sun, b, debug? dst : NULL); std::cout << "groups found:" << groups.size() << std::endl; std::cout << "Wolf number: " << b.size() + (groups.size() * 10) << " sunspots in image " << argv[optind] << std::endl; if (!debug) { cvShowImage("Original", src); cvShowImage("Result", dst); std::cout << "Src Width:" << src->width << "\t" << "Height:"<< src->height << std::endl; std::cout << "Dst Width:" << dst->width << "\t" << "Height:"<< dst->height << std::endl; } double dIntensity; double dMin; double dMax; oFitMDIcontinum.sunMeanIntensity(&dIntensity, &dMin, &dMax); dMin = dIntensity * 0.75; std::cout << "Sun Intensity: " << dIntensity << std::endl; blob_collection::iterator iter; /* int npoints=0; double dspotInt=0; double dMagAverage = 0; */ oFitMag.openFit(argv[optind]); for (iter = b.begin(); iter != b.end(); iter++) { double dMagAverage, dMagAveragePos, dMagAverageNeg, dArea, dIntensityAvg; oFitMag.magFieldAverage(iter->second.listPoints, &dMagAverage, &dMagAveragePos, &dMagAverageNeg); oFitMDIcontinum.Area(&(iter->second), &dArea); oFitMDIcontinum.IntensityAverage(iter->second.listPoints, &dIntensityAvg); std::cout << iter->first << "| Center:" << iter->second.getLatDeg() << "," << iter->second.getLonDeg() << "| Points : " << iter->second.listPoints.size() << "| AREA : " << dArea << "| Intensidade " << dIntensityAvg / dIntensity << "| Mag:" << dMagAverage << " : " << dMagAveragePos << " : " << dMagAverageNeg << std::endl; // intensidade mancha // center em graus // depois do primeiro teste 40 ou 50 // B/Int B/A Int/A | int média mancha / int central sol /* iter->second.listPoints.clear(); std::cout << iter->first << "| Center:" << iter->second.center.x << "," << iter->second.center.y; oFitMDIcontinum.reposCenterBlob(&(iter->second)); std::cout << "| Re-Center:" << iter->second.center.x << "," << iter->second.center.y; oFitMDIcontinum.regionGrowing(iter->second.center, &npoints, &dspotInt, src, dMin, iter->second.listPoints); std::cout << " | Points:" << npoints << "\t| Inyensity: " << dspotInt << std::endl; */ } oFitMDIcontinum.closeFit(); oFitMag.closeFit(); while (27 == (cvWaitKey(0) & 0xff)); cvDestroyAllWindows(); cvReleaseImage(&src); cvReleaseImage(&dst); } return 0; }