PolyPerlin.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #define SAMPLE_SIZE 1024
  14. namespace Polycode {
  15. class _PolyExport Perlin
  16. {
  17. public:
  18. Perlin(int octaves,Number freq,Number amp,int seed);
  19. Number Get(Number x,Number y)
  20. {
  21. Number vec[2];
  22. vec[0] = x;
  23. vec[1] = y;
  24. return perlin_noise_2D(vec);
  25. };
  26. private:
  27. void init_perlin(int n,Number p);
  28. Number perlin_noise_2D(Number vec[2]);
  29. Number noise1(Number arg);
  30. Number noise2(Number vec[2]);
  31. Number noise3(Number vec[3]);
  32. void normalize2(Number v[2]);
  33. void normalize3(Number v[3]);
  34. void init(void);
  35. int mOctaves;
  36. Number mFrequency;
  37. Number mAmplitude;
  38. int mSeed;
  39. int p[SAMPLE_SIZE + SAMPLE_SIZE + 2];
  40. Number g3[SAMPLE_SIZE + SAMPLE_SIZE + 2][3];
  41. Number g2[SAMPLE_SIZE + SAMPLE_SIZE + 2][2];
  42. Number g1[SAMPLE_SIZE + SAMPLE_SIZE + 2];
  43. bool mStart;
  44. };
  45. }