PolyPerlin.h 979 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * PolyPerlin.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 5/9/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Math
  10. #pragma once
  11. #include "PolyGlobals.h"
  12. #define SAMPLE_SIZE 1024
  13. namespace Polycode {
  14. class _PolyExport Perlin
  15. {
  16. public:
  17. Perlin(int octaves,float freq,float amp,int seed);
  18. float Get(float x,float y)
  19. {
  20. float vec[2];
  21. vec[0] = x;
  22. vec[1] = y;
  23. return perlin_noise_2D(vec);
  24. };
  25. private:
  26. void init_perlin(int n,float p);
  27. float perlin_noise_2D(float vec[2]);
  28. float noise1(float arg);
  29. float noise2(float vec[2]);
  30. float noise3(float vec[3]);
  31. void normalize2(float v[2]);
  32. void normalize3(float v[3]);
  33. void init(void);
  34. int mOctaves;
  35. float mFrequency;
  36. float mAmplitude;
  37. int mSeed;
  38. int p[SAMPLE_SIZE + SAMPLE_SIZE + 2];
  39. float g3[SAMPLE_SIZE + SAMPLE_SIZE + 2][3];
  40. float g2[SAMPLE_SIZE + SAMPLE_SIZE + 2][2];
  41. float g1[SAMPLE_SIZE + SAMPLE_SIZE + 2];
  42. bool mStart;
  43. };
  44. }