Exemple #1
0
/**
 * @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();
}