diff options
author | Weblate <42@minetest.ru> | 2013-04-07 13:39:28 +0200 |
---|---|---|
committer | Weblate <42@minetest.ru> | 2013-04-07 13:39:28 +0200 |
commit | feb7de91ec34ef1ca3152270a7bc62b2e308f1bd (patch) | |
tree | 65c33378bae9b7ac565b979237b6d594b511171f /src/noise.cpp | |
parent | 33052abf42886ef03c4f46196cab6f767259a672 (diff) | |
parent | 4468ea84e6d0faede5a01e8d97d359c537aa7ec8 (diff) | |
download | minetest-feb7de91ec34ef1ca3152270a7bc62b2e308f1bd.tar.gz minetest-feb7de91ec34ef1ca3152270a7bc62b2e308f1bd.tar.bz2 minetest-feb7de91ec34ef1ca3152270a7bc62b2e308f1bd.zip |
Merge remote branch 'origin/master'
Diffstat (limited to 'src/noise.cpp')
-rw-r--r-- | src/noise.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/noise.cpp b/src/noise.cpp index 49b5f7e58..5788a8320 100644 --- a/src/noise.cpp +++ b/src/noise.cpp @@ -1,6 +1,7 @@ /* Minetest Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com> +Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net> This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -536,6 +537,41 @@ float *Noise::perlinMap2D(float x, float y) { } +float *Noise::perlinMap2DModulated(float x, float y, float *persist_map) { + float f = 1.0; + int i, j, index, oct; + + x /= np->spread.X; + y /= np->spread.Y; + + memset(result, 0, sizeof(float) * sx * sy); + + float *g = new float[sx * sy]; + for (index = 0; index != sx * sy; index++) + g[index] = 1.0; + + for (oct = 0; oct < np->octaves; oct++) { + gradientMap2D(x * f, y * f, + f / np->spread.X, f / np->spread.Y, + seed + np->seed + oct); + + index = 0; + for (j = 0; j != sy; j++) { + for (i = 0; i != sx; i++) { + result[index] += g[index] * buf[index]; + g[index] *= persist_map[index]; + index++; + } + } + + f *= 2.0; + } + + delete[] g; + return result; +} + + float *Noise::perlinMap3D(float x, float y, float z) { float f = 1.0, g = 1.0; int i, j, k, index, oct; |