heatMap.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. Copyright (C) 2015 Jochem Raat
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #pragma once
  15. #include <random>
  16. #include <fractalNoise.h>
  17. // This class takes a height map of an island and its width and height
  18. // and generates a heat map represented as a array of doubles, where
  19. // higher numbers represent higher temperatures.
  20. class HeatMapGenerator {
  21. public:
  22. // The constructor takes a random generator to pass to the
  23. // PerlinNoiseGenerator.
  24. HeatMapGenerator(std::mt19937 *mt) : fractalNoiseGenerator(mt) { }
  25. // Generate a heat map for the given height map, this is done by
  26. // combining the height map with a random perlin noise map.
  27. double *generateHeatMap(double *heightmap,
  28. unsigned width,
  29. unsigned height);
  30. private:
  31. // Used to generate the perlin noise maps
  32. FractalNoiseGenerator fractalNoiseGenerator;
  33. // Used to generate the heat at a point from the height and
  34. // noise.
  35. double generateHeatPoint(double height, double noise);
  36. };