Core 1.0
SimplexNoise Class Reference

Simplex noise. More...

#include <noise.h>

Inheritance diagram for SimplexNoise:
AnalyticScalarField SimplexTurbulence

Public Member Functions

 SimplexNoise ()
 Empty.
 ~SimplexNoise ()
 Empty.
double Value (const Vector &) const
 Compute the simplex noise at a given point.
double K () const
 Return the global Lipschitz constant of the noise.
Public Member Functions inherited from AnalyticScalarField
 AnalyticScalarField (bool=true)
 Constructor.
virtual Vector Gradient (const Vector &) const
 Compute the gradient of the field.
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.

Static Protected Attributes

static const Vector gradient [12]
 Array of gradients for 3D noise.
static const int perm [512]
 Permutation table, 256 entries duplicated once to avoid modulo computations.
static const double G3 = 1.0 / 6.0
 Unskew factors for 3D case.
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.
Protected Attributes inherited from AnalyticScalarField
bool sign = true
 Sign convention, used for normal computation.

Detailed Description

Simplex noise.

Simplex noise returns random values in [-1,+1] interval.

See also
Noise

Member Function Documentation

◆ Value()

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

Compute the simplex noise at a given point.

Parameters
pPoint.

Reimplemented from AnalyticScalarField.

Reimplemented in SimplexTurbulence.