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 Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser 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);
89 NOISE_PERLIN_CONTOUR_FLIP_YZ,
99 double noise_scale; // Useful for contour noises
101 NoiseParams(NoiseType type_=NOISE_PERLIN, int seed_=0,
102 int octaves_=3, double persistence_=0.5,
103 double pos_scale_=100.0, double noise_scale_=1.0):
107 persistence(persistence_),
108 pos_scale(pos_scale_),
109 noise_scale(noise_scale_)
114 double noise3d_param(const NoiseParams ¶m, double x, double y, double z);
123 void create(const NoiseParams ¶m,
124 double first_x, double first_y, double first_z,
125 double last_x, double last_y, double last_z,
126 double samplelength_x, double samplelength_y, double samplelength_z);
127 void multiply(const NoiseParams ¶m);
129 void create(int seed, int octaves, double persistence,
131 double first_x, double first_y, double first_z,
132 double last_x, double last_y, double last_z,
133 double samplelength_x, double samplelength_y, double samplelength_z);
135 void intSet(int x, int y, int z, double d);
136 void intMultiply(int x, int y, int z, double d);
137 double intGet(int x, int y, int z);
138 double get(double x, double y, double z);
139 //bool contains(double x, double y, double z);
143 double m_start_x, m_start_y, m_start_z;
144 double m_samplelength_x, m_samplelength_y, m_samplelength_z;
145 int m_size_x, m_size_y, m_size_z;