mirror of
https://github.com/love2d/love.git
synced 2026-08-20 20:49:54 +02:00
Replaced Simplex noise with Perlin noise for the 3D and 4D variants of love.math.noise, to avoid patent-infringement issues (resolves issue #997.)
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
// Noise1234
|
||||
// Author: Stefan Gustavson (stegu@itn.liu.se)
|
||||
//
|
||||
// This library is public domain software, released by the author
|
||||
// into the public domain in February 2011. You may do anything
|
||||
// you like with it. You may even remove all attributions,
|
||||
// but of course I'd appreciate it if you kept my name somewhere.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
|
||||
/** \file
|
||||
\brief Declares the Noise1234 class for producing Perlin noise.
|
||||
\author Stefan Gustavson (stegu@itn.liu.se)
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is a clean, fast, modern and free Perlin noise class in C++.
|
||||
* Being a stand-alone class with no external dependencies, it is
|
||||
* highly reusable without source code modifications.
|
||||
*
|
||||
* Note:
|
||||
* Replacing the "float" type with "double" can actually make this run faster
|
||||
* on some platforms. A templatized version of Noise1234 could be useful.
|
||||
*/
|
||||
|
||||
class Noise1234 {
|
||||
|
||||
public:
|
||||
Noise1234() {}
|
||||
~Noise1234() {}
|
||||
|
||||
/** 1D, 2D, 3D and 4D float Perlin noise, SL "noise()"
|
||||
*/
|
||||
static float noise( float x );
|
||||
static float noise( float x, float y );
|
||||
static float noise( float x, float y, float z );
|
||||
static float noise( float x, float y, float z, float w );
|
||||
|
||||
/** 1D, 2D, 3D and 4D float Perlin periodic noise, SL "pnoise()"
|
||||
*/
|
||||
static float pnoise( float x, int px );
|
||||
static float pnoise( float x, float y, int px, int py );
|
||||
static float pnoise( float x, float y, float z, int px, int py, int pz );
|
||||
static float pnoise( float x, float y, float z, float w,
|
||||
int px, int py, int pz, int pw );
|
||||
|
||||
private:
|
||||
static unsigned char perm[];
|
||||
static float grad( int hash, float x );
|
||||
static float grad( int hash, float x, float y );
|
||||
static float grad( int hash, float x, float y , float z );
|
||||
static float grad( int hash, float x, float y, float z, float t );
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user