Changeset 25918
- Timestamp:
- Oct 22, 2009, 8:36:27 AM (17 years ago)
- Location:
- trunk/Ohana/src/kapa2
- Files:
-
- 1 added
- 1 edited
-
doc/mark.issues.txt (added)
-
src/DrawObjects.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/kapa2/src/DrawObjects.c
r13320 r25918 181 181 182 182 /******/ 183 /* simplify the code abit by finding triplets, watch out for a histogram of 2 points */ 183 184 void DrawHistogram (KapaGraphWidget *graph, Gobjects *object) { 184 185 … … 186 187 float *x, *y; 187 188 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; 189 190 double X0, X1, Y0, Y1; 190 191 … … 211 212 for (i = 0; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++); 212 213 if (i >= object[0].Npts) return; 214 215 /* first valid data point */ 213 216 sx0 = x[i]*mxi + y[i]*mxj + bx; 214 217 sy0 = x[i]*myi + y[i]*myj + by; 215 218 sx0 = MIN (MAX (sx0, X0), X1); 216 219 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; 217 244 218 245 /* continue with rest of points */ … … 227 254 DrawLine (sxa, sy0, sxa, sy1); 228 255 DrawLine (sxa, sy1, sx1, sy1); 256 sxo = sx0; syo = sy0; 229 257 sx0 = sx1; sy0 = sy1; 230 258 } 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 /* 268 void 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 */ 232 351 233 352 /******/
Note:
See TracChangeset
for help on using the changeset viewer.
