RandNoise.cpp 803 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "RandNoise.h"
  2. #include <stdlib.h>
  3. #ifndef RAND_MAX
  4. # define RAND_MAX 0x7FFF
  5. #endif
  6. RandNoise::RandNoise(int seed)
  7. : Noise(),
  8. seed(seed)
  9. {
  10. srand(seed);
  11. table = new unsigned short[RandNoiseTableSize];
  12. for (int i = 0; i < RandNoiseTableSize; i++)
  13. {
  14. int r = rand();
  15. table[i] = (unsigned short)(r % RAND_MAX);
  16. }
  17. }
  18. RandNoise::~RandNoise()
  19. {
  20. delete[] table;
  21. }
  22. int RandNoise::getSeed() const
  23. {
  24. return seed;
  25. }
  26. double RandNoise::getNoise(double x, double y, double z)
  27. {
  28. int index = seed % RandNoiseTableSize;
  29. index = abs(table[index] + (int)x) % RandNoiseTableSize;
  30. index = abs(table[index] + (int)y) % RandNoiseTableSize;
  31. index = abs(table[index] + (int)z) % RandNoiseTableSize;
  32. return (double)table[index] / RAND_MAX;
  33. }