Core 1.0
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
SimplexTurbulence2 Class Reference

Fractal Brownian motion from a simplex noise function. More...

#include <turbulence.h>

Inheritance diagram for SimplexTurbulence2:
SimplexNoise2 AnalyticScalarField2

Public Member Functions

 SimplexTurbulence2 (const double &, const double &, const double &, const double &=0.5, const double &=0.5, int=8, const Vector2 &=Vector::Null)
 Create a scaled turbulence. More...
 
 SimplexTurbulence2 ()
 Unit turbulence.
 
 ~SimplexTurbulence2 ()
 Empty.
 
double Value (const Vector2 &) const
 Compute the simplex noise at a given point. More...
 
double GetAlpha () const
 Return the amplitude dampening coefficient.
 
double GetLambda () const
 Return the wavelength dampening coefficient.
 
double GetOctaves () const
 Number of octaves.
 
double K () const
 Return the global Lipschitz constant. More...
 
double Maximum () const
 Return the maximum of the turbulence.
 
virtual ScalarField2 Sample (const Array2 &) const
 Create a discrete scalar field by sampling a given domain. More...
 

Protected Member Functions

double UnitAt (const Vector2 &) const
 Compute the turbulence value at a given point. More...
 
- Protected Member Functions inherited from SimplexNoise2
double dot (const int *, const double &, const double &) const
 Scalar product.
 
 SimplexNoise2 ()
 Empty.
 
 ~SimplexNoise2 ()
 Empty.
 
double K () const
 Return the global Lipschitz constant of the noise.
 
- Protected Member Functions inherited from AnalyticScalarField2
Matrix Local (const Vector2 &) const
 Compute the local neighborhood in the one-ring aroung a point. More...
 
 AnalyticScalarField2 ()
 Create an analytic scalar field defined over the entire plane.
 
virtual Vector2 Gradient (const Vector2 &) const
 Compute the gradient of the field. More...
 
virtual Matrix2 Hessian (const Vector2 &) const
 Compute the hessian at a given point. More...
 
void Curvature (const Vector2 &, double &, double &) const
 Compute the gaussian and mean curvatures. More...
 
virtual Box2 GetBox () const
 Return the bounding box.
 

Protected Attributes

double alpha = 0.5
 Amplitude attenuation coefficient.
 
double lambda = 0.5
 Wavelength amplification coefficient.
 
int octaves = 8
 Number of octaves.
 
Vector2 t = Vector2::Null
 Translation.
 
double v0 = 0.0
 Base value.
 
double a0 = 1.0
 Base amplitude.
 
double l0 = 1.0
 Wavelength.
 
- Protected Attributes inherited from AnalyticScalarField2
Box2 box = Box2::Infinity
 Domain, set as infinite for base class.
 

Static Protected Attributes

static const Matrix2 R2 = Matrix2::Rotation(4.0 * Math::Pi / 19.0)
 Random incremental rotation in the plane.
 
- Static Protected Attributes inherited from SimplexNoise2
static const int grad2 [8][2]
 Array of gradients for 2D noise.
 
static const int perm [512]
 Permutation table, 256 entries duplicated once to avoid modulo computations.
 
static const double G2 = (3.0 - sqrt(3.0)) / 6.0
 Unskew factors for planar case.
 
- Static Protected Attributes inherited from AnalyticScalarField2
static const double epsilon = 1e-6
 \epsilon; value for partial derivatives
 

Detailed Description

Fractal Brownian motion from a simplex noise function.

A turbulence field is characterized by the number of octaves, the attenuation of the amplitude of the noise summed at every step, and by the amplification of the wavelength.

Constructor & Destructor Documentation

◆ SimplexTurbulence2()

SimplexTurbulence2::SimplexTurbulence2 ( const double &  v,
const double &  a,
const double &  l,
const double &  alpha = 0.5,
const double &  lambda = 0.5,
int  octaves = 8,
const Vector2 t = Vector::Null 
)
explicit

Create a scaled turbulence.

Parameters
v,a,lBase value, amplitude and wavelength.
alphaAmplitude attenuation factor (~0.5, should be less than 1.0).
lambdaWavelength attenuation factor (~0.5, should be less than 1.0).
octavesNumber of octaves.
tTranslation offset.

Member Function Documentation

◆ K()

double SimplexTurbulence2::K ( ) const

Return the global Lipschitz constant.

See also
Noise::K()

◆ Sample()

ScalarField2 AnalyticScalarField2::Sample ( const Array2 a) const
virtual

Create a discrete scalar field by sampling a given domain.

Parameters
aDomain.

Reimplemented from AnalyticScalarField2.

◆ UnitAt()

double SimplexTurbulence2::UnitAt ( const Vector2 p) const
protected

Compute the turbulence value at a given point.

Sums a series of scaled noise functions.

Parameters
pPoint.

◆ Value()

double SimplexTurbulence2::Value ( const Vector2 p) const
virtual

Compute the simplex noise at a given point.

Parameters
pPoint.

Reimplemented from SimplexNoise2.