/** * @brief Merge two adjacent convex hulls [lo, i] and [i, hi]. * * @param s The <code>mps_context</code> associated with the current computation. * @param lo starting index of the points of the first convex hull * in the vector <code>a</code>. * @param i last index of the points in the first convex hull and * first of index of the points in the second convex hull. * @param up last index of the points in the second convex hull * @param a array of points */ void mps_fmerge (mps_context * s, int lo, int i, int up, double a[]) { int il, ir, ill, irr; mps_boolean tstl, tstr; ill = lo; irr = up; il = mps_left (s, i, lo); ir = mps_right (s, i, up); if (mps_fctest (s, il, i, ir, a)) return; s->h[i] = false; do { if (il == lo) tstl = true; else { ill = mps_left (s, il, lo); tstl = mps_fctest (s, ill, il, ir, a); } if (ir == up) tstr = true; else { irr = mps_right (s, ir, up); tstr = mps_fctest (s, il, ir, irr, a); } if (!tstl) { s->h[il] = false; il = ill; } if (!tstr) { s->h[ir] = false; ir = irr; } } while (!(tstl && tstr)); }
void mps_update(void) { int i; for (i = 0; i < MAPPOINT_STATS_LINES; i++) { strcpy(mps_info[i],""); } switch (mps_style) { case MPS_MAP: { switch(MP_GROUP(mps_x, mps_y)) { case (GROUP_BLACKSMITH): mps_blacksmith (mps_x, mps_y); break; case (GROUP_COALMINE): mps_coalmine (mps_x, mps_y); break; case GROUP_COAL_POWER: mps_coal_power (mps_x, mps_y); break; case (GROUP_COMMUNE): mps_commune (mps_x, mps_y); break; case (GROUP_CRICKET): mps_cricket (mps_x, mps_y); break; case (GROUP_FIRESTATION): mps_firestation (mps_x, mps_y); break; case (GROUP_HEALTH): mps_health_centre (mps_x, mps_y); break; case (GROUP_INDUSTRY_H): mps_heavy_industry (mps_x, mps_y); break; case (GROUP_INDUSTRY_L): mps_light_industry (mps_x, mps_y); break; case (GROUP_MILL): mps_mill (mps_x, mps_y); break; case (GROUP_MONUMENT): mps_monument (mps_x, mps_y); break; case (GROUP_OREMINE): mps_oremine (mps_x, mps_y); break; case GROUP_ORGANIC_FARM: mps_organic_farm(mps_x, mps_y); break; case (GROUP_PORT): mps_port (mps_x, mps_y); break; case (GROUP_POTTERY): mps_pottery (mps_x, mps_y); break; case GROUP_POWER_LINE: mps_power_line (mps_x, mps_y); break; case (GROUP_RAIL): mps_rail (mps_x, mps_y); break; case (GROUP_RECYCLE): mps_recycle (mps_x, mps_y); break; case GROUP_RESIDENCE_LL: case GROUP_RESIDENCE_ML: case GROUP_RESIDENCE_HL: case GROUP_RESIDENCE_LH: case GROUP_RESIDENCE_MH: case GROUP_RESIDENCE_HH: mps_residence(mps_x, mps_y); break; case (GROUP_ROAD): mps_road (mps_x, mps_y); break; case (GROUP_ROCKET): mps_rocket (mps_x, mps_y); break; case (GROUP_SCHOOL): mps_school (mps_x, mps_y); break; case GROUP_SOLAR_POWER: mps_solar_power (mps_x, mps_y); break; case (GROUP_SUBSTATION): mps_substation (mps_x, mps_y); break; case (GROUP_TIP): mps_tip (mps_x, mps_y); break; case (GROUP_TRACK): mps_track(mps_x, mps_y); break; case (GROUP_MARKET): mps_market (mps_x, mps_y); break; case (GROUP_UNIVERSITY): mps_university (mps_x, mps_y); break; case (GROUP_WATER): mps_water (mps_x, mps_y); break; case (GROUP_WINDMILL): mps_windmill (mps_x, mps_y); break; default: printf("MPS unimplemented for that module\n"); mps_style = MPS_NONE; } } break; case MPS_ENV: mps_right (mps_x, mps_y); break; case MPS_GLOBAL: { switch (mps_global_style) { case MPS_GLOBAL_FINANCE: mps_global_finance(); break; case MPS_GLOBAL_OTHER_COSTS: mps_global_other_costs(); break; case MPS_GLOBAL_HOUSING: mps_global_housing(); break; default: printf("MPS unimplemented for global display\n"); break; } } break; } mps_refresh(); }