IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 10, 2011, 4:52:36 PM (16 years ago)
Author:
eugene
Message:

draw ends of histograms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20101205/Ohana/src/kapa2/src/PSObjects.c

    r27530 r30233  
    164164  float *x, *y;
    165165  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
    166   double sx0, sy0, sx1, sy1, sxa;
     166  double sx0, sy0, sx1, sy1, sxa, sya, sxo, syo;
    167167  double X0, X1, Y0, Y1;
    168168
     
    189189  for (i = 0; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++);
    190190  if (i >= object[0].Npts) return;
     191
     192  /* first valid data point */
     193  sx0 = x[i]*mxi + y[i]*mxj + bx;
     194  sy0 = x[i]*myi + y[i]*myj + by;
     195  sx0 = MIN (MAX (sx0, X0), X1);
     196  sy0 = MAX (MIN (sy0, Y0), Y1);
     197 
     198  /* find the second valid datapoint */
     199  for (i++; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++);
     200  if (i >= object[0].Npts) return;
     201
     202  /* second valid data point */
     203  sx1 = x[i]*mxi + y[i]*mxj + bx;
     204  sy1 = x[i]*myi + y[i]*myj + by;
     205  sx1 = MIN (MAX (sx1, X0), X1);
     206  sy1 = MAX (MIN (sy1, Y0), Y1);
     207 
     208  /* connect first point to second point */
     209  sxa = sx0 - 0.5*(sx1 - sx0);
     210  sya = MAX (sy0, Y0);
     211  DrawLine (sx0, sy0, sxa, sy0);
     212  DrawLine (sxa, sy0, sxa, sya);
     213 
     214  /* draw segment equal distance behind first point and down to x-axis */
     215  sxa = 0.5*(sx0 + sx1);
     216  DrawLine (sx0, sy0, sxa, sy0);
     217  DrawLine (sxa, sy0, sxa, sy1);
     218  DrawLine (sxa, sy1, sx1, sy1);
     219  sx0 = sx1;
     220  sy0 = sy1;
     221 
     222  /* continue with rest of points */
     223  sxo = syo = 0;
     224  for (i++; i < object[0].Npts; i++) {
     225    if (!(finite(x[i]) && finite(y[i]))) continue;
     226    sx1 = x[i]*mxi + y[i]*mxj + bx;
     227    sy1 = x[i]*myi + y[i]*myj + by;
     228    sx1 = MIN (MAX (sx1, X0), X1);
     229    sy1 = MAX (MIN (sy1, Y0), Y1);
     230    sxa = 0.5*(sx0 + sx1);
     231    DrawLine (sx0, sy0, sxa, sy0);
     232    DrawLine (sxa, sy0, sxa, sy1);
     233    DrawLine (sxa, sy1, sx1, sy1);
     234    sxo = sx0; syo = sy0;
     235    sx0 = sx1; sy0 = sy1;
     236  }
     237 
     238  /* draw segment equal distance after last point and down to x-axis */
     239  sxa = sx1 + 0.5*(sx1 - sxo);
     240  sya = MAX (sy1, Y0);
     241  DrawLine (sx1, sy1, sxa, sy1);
     242  DrawLine (sxa, sy1, sxa, sya);
     243
     244# if (0)
    191245  sx0 = x[i]*mxi + y[i]*mxj + bx;
    192246  sy0 = x[i]*myi + y[i]*myj + by;
     
    207261    sx0 = sx1; sy0 = sy1;
    208262  }
     263# endif
    209264}
    210265
Note: See TracChangeset for help on using the changeset viewer.