IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25918


Ignore:
Timestamp:
Oct 22, 2009, 8:36:27 AM (17 years ago)
Author:
eugene
Message:

address some of marks issues

Location:
trunk/Ohana/src/kapa2
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/kapa2/src/DrawObjects.c

    r13320 r25918  
    181181
    182182/******/
     183/* simplify the code abit by finding triplets, watch out for a histogram of 2 points */
    183184void DrawHistogram (KapaGraphWidget *graph, Gobjects *object) {
    184185
     
    186187  float *x, *y;
    187188  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
    188   double sx0, sy0, sx1, sy1, sxa;
     189  double sx0, sy0, sx1, sy1, sxa, sya, sxo, syo;
    189190  double X0, X1, Y0, Y1;
    190191
     
    211212  for (i = 0; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++);
    212213  if (i >= object[0].Npts) return;
     214
     215  /* first valid data point */
    213216  sx0 = x[i]*mxi + y[i]*mxj + bx;
    214217  sy0 = x[i]*myi + y[i]*myj + by;
    215218  sx0 = MIN (MAX (sx0, X0), X1);
    216219  sy0 = MAX (MIN (sy0, Y0), Y1);
     220 
     221  /* find the second valid datapoint */
     222  for (i++; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++);
     223  if (i >= object[0].Npts) return;
     224
     225  /* second valid data point */
     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 
     231  /* connect first point to second point */
     232  sxa = sx0 - 0.5*(sx1 - sx0);
     233  sya = MAX (sy0, Y0);
     234  DrawLine (sx0, sy0, sxa, sy0);
     235  DrawLine (sxa, sy0, sxa, sya);
     236 
     237  /* draw segment equal distance behind first point and down to x-axis */
     238  sxa = 0.5*(sx0 + sx1);
     239  DrawLine (sx0, sy0, sxa, sy0);
     240  DrawLine (sxa, sy0, sxa, sy1);
     241  DrawLine (sxa, sy1, sx1, sy1);
     242  sx0 = sx1;
     243  sy0 = sy1;
    217244 
    218245  /* continue with rest of points */
     
    227254    DrawLine (sxa, sy0, sxa, sy1);
    228255    DrawLine (sxa, sy1, sx1, sy1);
     256    sxo = sx0; syo = sy0;
    229257    sx0 = sx1; sy0 = sy1;
    230258  }
    231 }
     259 
     260  /* draw segment equal distance after last point and down to x-axis */
     261  sxa = sx1 + 0.5*(sx1 - sxo);
     262  sya = MAX (sy1, Y0);
     263  DrawLine (sx1, sy1, sxa, sy1);
     264  DrawLine (sxa, sy1, sxa, sya);
     265}
     266
     267/*
     268void FillHistogram (KapaGraphWidget *graph, Gobjects *object) {
     269
     270  int i;
     271  float *x, *y;
     272  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
     273  double sx0, sy0, sx1, sy1, sxa, sya, sxo, syo;
     274  double X0, X1, Y0, Y1;
     275
     276  mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0);
     277  mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0);
     278  myi = graph[0].axis[0].dfy / (object[0].x1 - object[0].x0);
     279  myj = graph[0].axis[1].dfy / (object[0].y1 - object[0].y0);
     280 
     281  bxi  =  graph[0].axis[0].fx - object[0].x0*graph[0].axis[0].dfx/(object[0].x1 - object[0].x0);
     282  bxj  =  -object[0].y0*graph[0].axis[1].dfx/(object[0].y1 - object[0].y0);
     283  byi  =  -object[0].x0*graph[0].axis[0].dfy/(object[0].x1 - object[0].x0);
     284  byj  =  graph[0].axis[1].fy - object[0].y0*graph[0].axis[1].dfy/(object[0].y1 - object[0].y0);
     285 
     286  bx = bxi + bxj;
     287  by = byi + byj;
     288 
     289  X0 = graph[0].axis[0].fx;
     290  X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx;
     291  Y0 = graph[0].axis[1].fy;
     292  Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy;
     293
     294  /* find the first valid datapoint */
     295  x = object[0].x; y = object[0].y;
     296  for (i = 0; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++);
     297  if (i >= object[0].Npts) return;
     298
     299  /* first valid data point */
     300  sx0 = x[i]*mxi + y[i]*mxj + bx;
     301  sy0 = x[i]*myi + y[i]*myj + by;
     302  sx0 = MIN (MAX (sx0, X0), X1);
     303  sy0 = MAX (MIN (sy0, Y0), Y1);
     304 
     305  /* find the second valid datapoint */
     306  for (i++; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++);
     307  if (i >= object[0].Npts) return;
     308
     309  /* second valid data point */
     310  sx1 = x[i]*mxi + y[i]*mxj + bx;
     311  sy1 = x[i]*myi + y[i]*myj + by;
     312  sx1 = MIN (MAX (sx1, X0), X1);
     313  sy1 = MAX (MIN (sy1, Y0), Y1);
     314 
     315  /* connect first point to second point */
     316  sxa = sx0 - 0.5*(sx1 - sx0);
     317  sya = MAX (sy0, Y0);
     318  DrawLine (sx0, sy0, sxa, sy0);
     319  DrawLine (sxa, sy0, sxa, sya);
     320 
     321  /* draw segment equal distance behind first point and down to x-axis */
     322  sxa = 0.5*(sx0 + sx1);
     323  DrawLine (sx0, sy0, sxa, sy0);
     324  DrawLine (sxa, sy0, sxa, sy1);
     325  DrawLine (sxa, sy1, sx1, sy1);
     326  sx0 = sx1;
     327  sy0 = sy1;
     328 
     329  /* continue with rest of points */
     330  for (i++; i < object[0].Npts; i++) {
     331    if (!(finite(x[i]) && finite(y[i]))) continue;
     332    sx1 = x[i]*mxi + y[i]*mxj + bx;
     333    sy1 = x[i]*myi + y[i]*myj + by;
     334    sx1 = MIN (MAX (sx1, X0), X1);
     335    sy1 = MAX (MIN (sy1, Y0), Y1);
     336    sxa = 0.5*(sx0 + sx1);
     337    DrawLine (sx0, sy0, sxa, sy0);
     338    DrawLine (sxa, sy0, sxa, sy1);
     339    DrawLine (sxa, sy1, sx1, sy1);
     340    sxo = sx0; syo = sy0;
     341    sx0 = sx1; sy0 = sy1;
     342  }
     343 
     344  /* draw segment equal distance after last point and down to x-axis */
     345  sxa = sx1 + 0.5*(sx1 - sxo);
     346  sya = MAX (sy1, Y0);
     347  DrawLine (sx1, sy1, sxa, sy1);
     348  DrawLine (sxa, sy1, sxa, sya);
     349}
     350*/
    232351
    233352/******/
Note: See TracChangeset for help on using the changeset viewer.