Terminus
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
terminus::PerlinNoise Class Reference

The PerlinNoise class implements a two dimensional noise function using multiple selectable gradient vector grids (layers). More...

#include <perlinnoise.h>

Public Member Functions

 PerlinNoise ()
 
 PerlinNoise (unsigned int seed)
 
void seed (unsigned int seed)
 seeds the underlying random number generator and invalidates the previously generated gradient grids More...
 
unsigned int seed () const
 
float noise (int layer, float x, float y) const
 evaluates the noise function at the given coordinates More...
 
float symmetricRnd () const
 
float asymmetricRnd () const
 

Protected Member Functions

float dotGradient (int layer, int iX, int iY, float x, float y) const
 
int gradientIndex (int iX, int iY) const
 
void generateGradients (int layer) const
 
std::vector< QVector2D > & gradients (int layer) const
 

Protected Attributes

unsigned int m_seed
 
std::default_random_engine m_rng
 
std::uniform_real_distribution< float > m_distSym
 
std::uniform_real_distribution< float > m_distAsym
 
int m_gradientCount
 
std::map< int, std::vector< QVector2D > > m_gradientGrid
 

Static Protected Attributes

static const float fScale = sqrt(2.f) / 2.f
 

Detailed Description

The PerlinNoise class implements a two dimensional noise function using multiple selectable gradient vector grids (layers).

Constructor & Destructor Documentation

terminus::PerlinNoise::PerlinNoise ( )
terminus::PerlinNoise::PerlinNoise ( unsigned int  seed)

Member Function Documentation

float terminus::PerlinNoise::asymmetricRnd ( ) const
Returns
a single random value from [0.0;1.0]
float terminus::PerlinNoise::dotGradient ( int  layer,
int  iX,
int  iY,
float  x,
float  y 
) const
protected
void terminus::PerlinNoise::generateGradients ( int  layer) const
protected
int terminus::PerlinNoise::gradientIndex ( int  iX,
int  iY 
) const
protected
std::vector< QVector2D > & terminus::PerlinNoise::gradients ( int  layer) const
protected
float terminus::PerlinNoise::noise ( int  layer,
float  x,
float  y 
) const

evaluates the noise function at the given coordinates

Parameters
layer
x
y
Returns
noise value

The coordinates can exceed the size of the gradient grid, as they will be wrapped.

void terminus::PerlinNoise::seed ( unsigned int  seed)

seeds the underlying random number generator and invalidates the previously generated gradient grids

Parameters
seed
unsigned int terminus::PerlinNoise::seed ( ) const
Returns
the seed that was last used to seed the underlying random number generator
float terminus::PerlinNoise::symmetricRnd ( ) const
Returns
a single random value from [-1.0;1.0]

Member Data Documentation

const float terminus::PerlinNoise::fScale = sqrt(2.f) / 2.f
staticprotected
std::uniform_real_distribution<float> terminus::PerlinNoise::m_distAsym
mutableprotected
std::uniform_real_distribution<float> terminus::PerlinNoise::m_distSym
mutableprotected
int terminus::PerlinNoise::m_gradientCount
protected
std::map<int,std::vector<QVector2D> > terminus::PerlinNoise::m_gradientGrid
mutableprotected
std::default_random_engine terminus::PerlinNoise::m_rng
mutableprotected
unsigned int terminus::PerlinNoise::m_seed
protected

The documentation for this class was generated from the following files: