26 #include "precompiled.h"
29 #include <boost/random/mersenne_twister.hpp>
38 return ((
float)
rng()) / 4294967296.0f;
44 return t*t*t*(t*(t*6-15)+10);
52 for(
int i=0; i<
freq; i++)
55 for(
int j=0; j<
freq; j++)
65 for(
int i=0; i<
freq; i++)
77 int ix = (int)floor(x);
78 int iy = (int)floor(y);
86 int ix1 = (ix+1) %
freq;
87 int iy1 = (iy+1) %
freq;
96 float a = s + ex*(t-s);
97 float b = u + ex*(v-u);
98 return (a + ey*(b-a)) * .5 + .5;
104 for(
int i=0; i<
freq; i++)
107 for(
int j=0; j<
freq; j++)
110 for(
int k=0; k<
vfreq; k++)
126 for(
int i=0; i<
freq; i++)
128 for(
int j=0; j<
freq; j++)
130 delete[]
grads[i][j];
143 int ix = (int)floor(x);
144 int iy = (int)floor(y);
145 int iz = (int)floor(z);
155 int ix1 = (ix+1) %
freq;
156 int iy1 = (iy+1) %
freq;
157 int iz1 = (iz+1) %
vfreq;
173 float a0 = s0 + ex*(t0-s0);
174 float b0 = u0 + ex*(v0-u0);
175 float c0 = a0 + ey*(b0-a0);
177 float a1 = s1 + ex*(t1-s1);
178 float b1 = u1 + ex*(v1-u1);
179 float c1 = a1 + ey*(b1-a1);
181 return (c0 + ez*(c1-c0)) * .5 + .5;
float Dot(const CVector3D &vector) const
int vfreq
Frequency in Z (vertical frequency)
float operator()(float x, float y, float z)
Evaluate the noise function at a given point.
CVector3D *** grads
freq*freq*vfreq random gradient vectors in the unit cube
boost::mt19937 rng
Random number generator (Boost Mersenne Twister)
Noise3D(int freq, int vfreq)
CVector2D ** grads
freq*freq random gradient vectors in the unit cube
float operator()(float x, float y)
Evaluate the noise function at a given point.
float randFloat()
Utility function for random numbers.
float LengthSquared() const
float Dot(const CVector2D &a) const
int freq
Frequency in X and Y.
int freq
Frequency in X and Y.
float easeCurve(float t)
Utility function used in both noises as an ease curve.