3 Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 PseudoRandom(): m_next(0)
31 PseudoRandom(int seed): m_next(seed)
41 m_next = m_next * 1103515245 + 12345;
42 return((unsigned)(m_next/65536) % 32768);
44 int range(int min, int max)
46 if(max-min > 32768/10)
48 //dstream<<"WARNING: PseudoRandom::range: max > 32767"<<std::endl;
56 return (next()%(max-min+1))+min;
62 double easeCurve(double t);
64 // Return value: -1 ... 1
65 double noise2d(int x, int y, int seed);
66 double noise3d(int x, int y, int z, int seed);
68 double noise2d_gradient(double x, double y, int seed);
69 double noise3d_gradient(double x, double y, double z, int seed);
71 double noise2d_perlin(double x, double y, int seed,
72 int octaves, double persistence);
74 double noise2d_perlin_abs(double x, double y, int seed,
75 int octaves, double persistence);
77 double noise3d_perlin(double x, double y, double z, int seed,
78 int octaves, double persistence);
80 double noise3d_perlin_abs(double x, double y, double z, int seed,
81 int octaves, double persistence);
88 NOISE_PERLIN_CONTOUR_FLIP_YZ
98 double noise_scale; // Useful for contour noises
100 NoiseParams(NoiseType type_=NOISE_PERLIN, int seed_=0,
101 int octaves_=3, double persistence_=0.5,
102 double pos_scale_=100.0, double noise_scale_=1.0):
106 persistence(persistence_),
107 pos_scale(pos_scale_),
108 noise_scale(noise_scale_)
113 double noise3d_param(const NoiseParams ¶m, double x, double y, double z);
122 void create(const NoiseParams ¶m,
123 double first_x, double first_y, double first_z,
124 double last_x, double last_y, double last_z,
125 double samplelength_x, double samplelength_y, double samplelength_z);
126 void multiply(const NoiseParams ¶m);
128 void create(int seed, int octaves, double persistence,
130 double first_x, double first_y, double first_z,
131 double last_x, double last_y, double last_z,
132 double samplelength_x, double samplelength_y, double samplelength_z);
134 void intSet(int x, int y, int z, double d);
135 void intMultiply(int x, int y, int z, double d);
136 double intGet(int x, int y, int z);
137 double get(double x, double y, double z);
138 //bool contains(double x, double y, double z);
142 double m_start_x, m_start_y, m_start_z;
143 double m_samplelength_x, m_samplelength_y, m_samplelength_z;
144 int m_size_x, m_size_y, m_size_z;