Core 1.0
Noise Class Reference

Perlin noise. More...

#include <noise.h>

Inheritance diagram for Noise:
AnalyticScalarField NoiseTurbulence

Public Member Functions

 Noise (bool=false)
 Create a noise function.
 ~Noise ()
 Empty.
double Value (const Vector &) const
 Compute noise at a given point.
double K () const
 Return the global Lipschitz constant of the noise.
Vector Gradient (const Vector &) const
 Compute the gradient of the noise function at a given point.
double AtGradient (const Vector &, Vector &) const
 Compute the gradient of the noise function at a given point.
Vector AtVector (const Vector &) const
 Vector version of Perlin-style noise function.
Public Member Functions inherited from AnalyticScalarField
 AnalyticScalarField (bool=true)
 Constructor.
Matrix Hessian (const Vector &) const
 Compute the Hessian symmetric matrix of the field function.
virtual Vector Normal (const Vector &) const
 Compute the normal to the surface.
bool Inside (const double &) const
 Check if the value is considered as inside or outside.
virtual Color GetMaterial (const Vector &, const Vector &=Vector::Null) const
 Compute the color.
virtual Box GetBox () const
 Compute the bounding box of the scalar field.
void Curvature (const Vector &, double &, double &) const
 Compute the gaussian and mean curvatures.
Vector Cast (const Vector &, const double &, const double &=1e-6, int n=100) const
 Given a starting vertex x, project it onto the implicit surface following the gradient.
Vector Dichotomy (Vector, Vector, double, double, double, const double &=1.0e-4) const
 Compute the intersection between a segment and an implicit surface.
virtual bool GetSample (Vector &, const Box &, Random &=Random::R239) const
 Find a point sample on the implicit surface.
virtual int GetSamples (QVector< Vector > &, const Box &, int, Random &=Random::R239) const
 Find a set of random sample points on the implicit surface.
virtual QVector< VectorPoisson (double, int, Random &=Random::R239) const
 Compute a Poisson sphere distribution on an implicit surface.
virtual ScalarField2 Sample (const Rectangles &, int, int) const
 Compute the field function at the vertices a lattice.
virtual ScalarField2 Sample (const Quadrangle &, int) const
 Sample the scalar field on a quadrangle.
virtual ScalarField Sample (const Box &, int) const
 Sample the implicit surface to get a scalar field.
int Roots (const Ray &, const double &, const double &, const double &, double *, int=1, const double &=1.0e-4) const
 Find the intersections between a ray and an implicit surface on a given interval.
int Roots (const Ray &, const double &, const double &, const double &, const double &, const double &, double *, int=1, const double &=1.0e-4) const
 This functions searches the intersections between a ray and an implicit surface on a given interval.
virtual double K (const Box &) const
 Compute the local Lipschitz constant inside a box.
virtual double K (const Sphere &) const
 Compute the local Lipschitz constant inside a box.
virtual double K (const Segment &) const
 Compute the local Lipschitz constant along a segment.
virtual void Polygonize (int, Mesh &, const Box &, const double &=1e-4) const
 Compute the polygonal mesh approximating the implicit surface.
virtual void PolygonizeLucie (const Box &, Mesh &, bool, bool) const
 Implementation of the original continuation polygonization method.
virtual void PolygonizeLucie (const double &, Mesh &, bool, bool) const
 Wyvill's original marching cubes algorithm.
virtual void Dual (int, Mesh &, const Box &) const
 Dual polygonization.
virtual bool SphereTrace (const Ray &, const double &, const double &, const double &, double &, int &, const double &=1e-4) const
 Find the first intersection between a ray and an implicit surface on a given interval, using sphere tracing.
virtual void Polygonize (const Box &, QVector< Triangle > &, const double &=1e-4, bool=false) const
 Polygonize a cube.
virtual void Polygonize (const Tetrahedra &, QVector< Triangle > &, const double &=1e-4) const
 Polygonize a tetrahedral cell.
virtual Mesh PolygonizeOctree (const Box &, int, const double &=1e-4) const
 Compute the polygonal mesh approximating the implicit surface using an octree decomposition of space.
virtual void Voxelize (const Box &, int, Box &, QVector< Vector > &) const
 Voxelize the scalar field.
virtual void Voxelize (int, Voxel &, const Box &) const
 Voxelization.
virtual double Volume (int=5) const
 Computes the volume of the BlobTree.
virtual double Volume (const Box &, int) const
 Compute the volume of a BlobTree object.
virtual double Volume (const Box &, int, double &) const
 Compute the volume of an implicit surface.
virtual double StochasticVolume (const Box &, int) const
 Compute the volume of an implicit surface.
virtual Sphere Center (int) const
 Computes the gravity center of the BlobTree.
virtual Sphere Center (const Box &, int) const
 Compute the center of gravity of the BlobTree.
virtual void Colorize (const Mesh &, MeshColor &) const
 Colorize the vertexes of a mesh according to the analytic scalar field.

Protected Attributes

bool quintic = false
 Flag defining interpolation type: either cubic (false) or quintic (true).
Protected Attributes inherited from AnalyticScalarField
bool sign = true
 Sign convention, used for normal computation.

Static Protected Attributes

static double rtable [267]
 Random double table.
static const short hashTable [4096]
 Hash table.
Static Protected Attributes inherited from AnalyticScalarField
static int ncubes = 0
 Number of cubes processed by polygonization algorithms.
static const double Epsilon = 1e-6
 Epsilon value for partial derivatives.

Additional Inherited Members

Static Public Member Functions inherited from AnalyticScalarField
static int Cubes ()
 Get the number of cubes processed.
Protected Member Functions inherited from AnalyticScalarField
bool Find (Vector &, bool, const Box &, int=10000, Random &=Random::R239) const
 Find a random sample point inside or outside the surface.

Detailed Description

Perlin noise.

This class is used as a core class to create various types of fractal noise, such as sums of scaled noises.

See also
SimplexNoise

Constructor & Destructor Documentation

◆ Noise()

Noise::Noise ( bool quintic = false)

Create a noise function.

Parameters
quinticFlag defining whether quintic interpolation will be used, noise uses cubic interpolation if set to false.

Member Function Documentation

◆ AtGradient()

double Noise::AtGradient ( const Vector & p,
Vector & n ) const

Compute the gradient of the noise function at a given point.

Note that it is much faster to call this function rather than calling Noise::Gradient() and NoiseAt() consecutively.

Parameters
pPoint.
nReturned gradient.
Returns
The noise value.

◆ AtVector()

Vector Noise::AtVector ( const Vector & p) const

Vector version of Perlin-style noise function.

Parameters
pPoint

◆ Gradient()

Vector Noise::Gradient ( const Vector & p) const
virtual

Compute the gradient of the noise function at a given point.

Parameters
pPoint.

Reimplemented from AnalyticScalarField.

◆ Value()

double Noise::Value ( const Vector & p) const
virtual

Compute noise at a given point.

Parameters
pPoint.

Reimplemented from AnalyticScalarField.

Reimplemented in NoiseTurbulence.