ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/noise.C
(Generate patch)

Comparing deliantra/server/common/noise.C (file contents):
Revision 1.5 by root, Sat Apr 23 04:56:46 2011 UTC vs.
Revision 1.6 by root, Sat Apr 23 05:42:11 2011 UTC

23#include "noise.h" 23#include "noise.h"
24 24
25///////////////////////////////////////////////////////////////////////////// 25/////////////////////////////////////////////////////////////////////////////
26 26
27// http://www-wales.ch.cam.ac.uk/~wales/CCD/Thomson/table.html, random permutation 27// http://www-wales.ch.cam.ac.uk/~wales/CCD/Thomson/table.html, random permutation
28// used as gradient vectors for noise3d
28static const float charges[256][3] = { 29static const float charges[256][3] = {
29 6.32096444e-01, -6.11406706e-01, 4.76062943e-01, 5.19172442e-01, 8.08229585e-01, -2.77893708e-01, 30 6.32096444e-01, -6.11406706e-01, 4.76062943e-01, 5.19172442e-01, 8.08229585e-01, -2.77893708e-01,
30 -8.81072422e-01, -4.68301230e-01, 6.63727731e-02, -1.92122323e-01, 9.81341519e-01, -7.60505942e-03, 31 -8.81072422e-01, -4.68301230e-01, 6.63727731e-02, -1.92122323e-01, 9.81341519e-01, -7.60505942e-03,
31 -2.57478265e-01, 9.34157733e-01, -2.47091628e-01, 8.75501090e-01, -1.48087600e-01, -4.59965112e-01, 32 -2.57478265e-01, 9.34157733e-01, -2.47091628e-01, 8.75501090e-01, -1.48087600e-01, -4.59965112e-01,
32 -6.44086082e-01, 3.21868600e-01, 6.93940720e-01, -4.42053435e-01, -1.94962529e-01, -8.75544615e-01, 33 -6.44086082e-01, 3.21868600e-01, 6.93940720e-01, -4.42053435e-01, -1.94962529e-01, -8.75544615e-01,
154 4.98855035e-01, -3.98703643e-01, 7.69531714e-01, 2.55373649e-01, -7.56251592e-02, 9.63880249e-01, 155 4.98855035e-01, -3.98703643e-01, 7.69531714e-01, 2.55373649e-01, -7.56251592e-02, 9.63880249e-01,
155 -1.51053916e-01, 3.85469253e-01, -9.10272580e-01, 6.78644990e-01, -7.26064181e-01, 1.10778074e-01, 156 -1.51053916e-01, 3.85469253e-01, -9.10272580e-01, 6.78644990e-01, -7.26064181e-01, 1.10778074e-01,
156 -3.07350590e-01, -9.14677987e-01, 2.62487703e-01, 5.60298616e-01, 1.74821302e-01, 8.09631381e-01, 157 -3.07350590e-01, -9.14677987e-01, 2.62487703e-01, 5.60298616e-01, 1.74821302e-01, 8.09631381e-01,
157}; 158};
158 159
160/////////////////////////////////////////////////////////////////////////////
161
162template<int N, typename T>
163template<class random_generator>
164void
165permutation<N,T>::seed (random_generator &rng)
166{
167 for (int i = 0; i < N; ++i)
168 pmap[i] = i;
169
170 // fisher-yates to randomly perturb
171 for (int i = N; --i; )
172 ::swap (pmap[i], pmap[rng (i + 1)]);
173}
174
175template class permutation<256, uint8_t>;
176
177/////////////////////////////////////////////////////////////////////////////
178
159static vec2d 179static vec2d
160floor (vec2d v) 180floor (vec2d v)
161{ 181{
162 return vec2d (std::floor (v[0]), std::floor (v[1])); 182 return vec2d (std::floor (v[0]), std::floor (v[1]));
163} 183}
170 190
171noise_gen<vec2d>::noise_gen (uint32_t seed) 191noise_gen<vec2d>::noise_gen (uint32_t seed)
172{ 192{
173 seedable_rand_gen rng (seed); 193 seedable_rand_gen rng (seed);
174 194
175#if 1 195#if 0
176 for (int i = 0; i < 256; ++i) 196 for (int i = 0; i < 256; ++i)
177 { 197 {
178 vec2d rv (rng () - 0.5f, rng () - 0.5f); 198 vec2d rv (rng () - 0.5f, rng () - 0.5f);
179 199
180 // normalise 200 // normalise
185 205
186 rvec[i] = rv; 206 rvec[i] = rv;
187 } 207 }
188#endif 208#endif
189 209
190#if 0 210#if 1
191 float offset = rng () * 3.14159265; 211 float offset = rng () * M_PI;
192 212
193 for (int i = 0; i < 256; ++i) 213 for (int i = 0; i < 256; ++i)
194 { 214 {
195 float phi = i * (3.14159265 * 2 / 256) + offset; 215 float phi = i * (M_PI * 2 / 256) + offset;
196 216
197 rvec[i][0] = sinf (phi); 217 rvec[i][0] = sinf (phi);
198 rvec[i][1] = -cosf (phi); 218 rvec[i][1] = -cosf (phi);
199 } 219 }
200 220

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines