diff options
author | Mattes D <github@xoft.cz> | 2014-11-20 10:13:10 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-11-20 10:13:10 +0100 |
commit | 288cbf12cb66ed9f026f81bb13e945c68cfefd13 (patch) | |
tree | fa97f48bbd8b871aa556c79974a2f64e76272ac0 /src/Noise/RidgedNoise.h | |
parent | Mobs: Fixed crash with terrain too high. (diff) | |
parent | Merge pull request #1603 from mc-server/ImprovedNoise (diff) | |
download | cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.gz cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.bz2 cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.lz cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.xz cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.tar.zst cuberite-288cbf12cb66ed9f026f81bb13e945c68cfefd13.zip |
Diffstat (limited to 'src/Noise/RidgedNoise.h')
-rw-r--r-- | src/Noise/RidgedNoise.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/Noise/RidgedNoise.h b/src/Noise/RidgedNoise.h new file mode 100644 index 000000000..69b480f60 --- /dev/null +++ b/src/Noise/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; +} ; + + + + + |