diff options
author | Mattes D <github@xoft.cz> | 2014-11-18 09:49:53 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-11-18 09:49:53 +0100 |
commit | f683872f5423c184d56bc229c7de44b2384c4787 (patch) | |
tree | b9676b82ee033e88bc98e0dd82f8a1d77c4209fa /src/RidgedNoise.h | |
parent | OctavedNoise: linux compilation fixes. (diff) | |
download | cuberite-f683872f5423c184d56bc229c7de44b2384c4787.tar cuberite-f683872f5423c184d56bc229c7de44b2384c4787.tar.gz cuberite-f683872f5423c184d56bc229c7de44b2384c4787.tar.bz2 cuberite-f683872f5423c184d56bc229c7de44b2384c4787.tar.lz cuberite-f683872f5423c184d56bc229c7de44b2384c4787.tar.xz cuberite-f683872f5423c184d56bc229c7de44b2384c4787.tar.zst cuberite-f683872f5423c184d56bc229c7de44b2384c4787.zip |
Diffstat (limited to '')
-rw-r--r-- | src/RidgedNoise.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/RidgedNoise.h b/src/RidgedNoise.h new file mode 100644 index 000000000..69b480f60 --- /dev/null +++ b/src/RidgedNoise.h @@ -0,0 +1,91 @@ + +// RidgedNoise.h + +// Implements the cRidgedNoise template class that generates ridged noise based on another noise provider. + + + + + +#pragma once + + + + + +template <typename N> +class cRidgedNoise +{ +public: + /** Creates a new instance with the seed set to 0. */ + cRidgedNoise(void): + m_Noise(0) + { + } + + + /** Creates a new instance with the specified seed. */ + cRidgedNoise(int a_Seed): + m_Noise(a_Seed) + { + } + + + /** Sets the seed for the underlying noise. */ + void SetSeed(int a_Seed) + { + m_Noise.SetSeed(a_Seed); + } + + + /** Fills a 2D array with the values of the noise. */ + void Generate2D( + NOISE_DATATYPE * a_Array, ///< Array to generate into [x + a_SizeX * y] + int a_SizeX, int a_SizeY, ///< Count of the array, in each direction + NOISE_DATATYPE a_StartX, NOISE_DATATYPE a_EndX, ///< Noise-space coords of the array in the X direction + NOISE_DATATYPE a_StartY, NOISE_DATATYPE a_EndY ///< Noise-space coords of the array in the Y direction + ) const + { + int ArrayCount = a_SizeX * a_SizeY; + m_Noise.Generate2D( + a_Array, a_SizeX, a_SizeY, + a_StartX, a_EndX, + a_StartY, a_EndY + ); + for (int i = 0; i < ArrayCount; i++) + { + a_Array[i] = fabs(a_Array[i]); + } + } + + + /** Fills a 3D array with the values of the noise. */ + void Generate3D( + NOISE_DATATYPE * a_Array, ///< Array to generate into [x + a_SizeX * y + a_SizeX * a_SizeY * z] + int a_SizeX, int a_SizeY, int a_SizeZ, ///< Count of the array, in each direction + NOISE_DATATYPE a_StartX, NOISE_DATATYPE a_EndX, ///< Noise-space coords of the array in the X direction + NOISE_DATATYPE a_StartY, NOISE_DATATYPE a_EndY, ///< Noise-space coords of the array in the Y direction + NOISE_DATATYPE a_StartZ, NOISE_DATATYPE a_EndZ ///< Noise-space coords of the array in the Z direction + ) const + { + int ArrayCount = a_SizeX * a_SizeY * a_SizeZ; + m_Noise.Generate2D( + a_Array, a_SizeX, a_SizeY, a_SizeZ, + a_StartX, a_EndX, + a_StartY, a_EndY, + a_StartZ, a_EndZ + ); + for (int i = 0; i < ArrayCount; i++) + { + a_Array[i] = fabs(a_Array[i]); + } + } + +protected: + N m_Noise; +} ; + + + + + |