diff --git a/src/math/noise/voronoi.hpp b/src/math/noise/voronoi.hpp index 7b7eb0a..79a7b5f 100644 --- a/src/math/noise/voronoi.hpp +++ b/src/math/noise/voronoi.hpp @@ -147,7 +147,11 @@ f1 for (std::size_t j = 0; j < N; ++j) { if (tiling[j]) - hash_position[j] = std::fmod(hash_position[j] + tiling[j], tiling[j]); + { + hash_position[j] = std::fmod(hash_position[j], tiling[j]); + if (hash_position[j] < T{0}) + hash_position[j] += tiling[j]; + } } // Calculate hash values for the hash position @@ -237,7 +241,11 @@ f1_edge for (std::size_t j = 0; j < N; ++j) { if (tiling[j]) - hash_position[j] = std::fmod(hash_position[j] + tiling[j], tiling[j]); + { + hash_position[j] = std::fmod(hash_position[j], tiling[j]); + if (hash_position[j] < T{0}) + hash_position[j] += tiling[j]; + } } // Calculate hash values for the hash position @@ -364,7 +372,11 @@ f1_f2 for (std::size_t j = 0; j < N; ++j) { if (tiling[j]) - hash_position[j] = std::fmod(hash_position[j] + tiling[j], tiling[j]); + { + hash_position[j] = std::fmod(hash_position[j], tiling[j]); + if (hash_position[j] < T{0}) + hash_position[j] += tiling[j]; + } } // Calculate hash values for the hash position