12 template<
typename NoiseFunction,
typename T =
double>
class Octaves {
18 template<
typename... Args>
explicit Octaves(
const size_t octaves, Args... args) : noise(
std::forward<Args>(args)...), octaves(octaves) {}
21 template<
typename TT>
static void multiply(TT& a, TT b) { a *= b; }
23 template<
typename TT,
typename... Ts>
static void multiply(TT& a, Ts&... as, TT b) {
32 for(
size_t i = 0; i < octaves; ++i) {
33 result += noise(vs...) * amp;
34 multiply<Ts...>(vs..., 2.0);
Definition Octaves.hpp:12
T operator()(Ts... vs) const
Definition Octaves.hpp:28
Octaves(const size_t octaves, Args... args)
Definition Octaves.hpp:18
static void multiply(TT &a, Ts &... as, TT b)
Definition Octaves.hpp:23
NoiseFunction noise
Definition Octaves.hpp:14
size_t octaves
Definition Octaves.hpp:15
static void multiply(TT &a, TT b)
Definition Octaves.hpp:21
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25