c_intr.c 562 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <grass/gis.h>
  2. #include <grass/stats.h>
  3. void c_intr(DCELL * result, DCELL * values, int n)
  4. {
  5. DCELL center;
  6. int count;
  7. int diff;
  8. int i;
  9. if (G_is_d_null_value(&values[n / 2])) {
  10. G_set_d_null_value(result, 1);
  11. return;
  12. }
  13. center = values[n / 2];
  14. count = 0;
  15. diff = 0;
  16. for (i = 0; i < n; i++) {
  17. if (G_is_d_null_value(&values[i]))
  18. continue;
  19. count++;
  20. if (values[i] != center)
  21. diff++;
  22. }
  23. count--;
  24. if (count <= 0)
  25. *result = 0;
  26. else
  27. *result = (diff * 100.0 + (count / 2)) / count + 1;
  28. }