66 lines
1.5 KiB
C++
66 lines
1.5 KiB
C++
// Noise.h: interface for the CNoise class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_NOISE_H__D47F4AD3_03B3_4E25_957A_697628BCDDEA__INCLUDED_)
|
|
#define AFX_NOISE_H__D47F4AD3_03B3_4E25_957A_697628BCDDEA__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
class CDynamicArray2D;
|
|
|
|
// Parameter structures
|
|
struct SNoiseParams
|
|
{
|
|
unsigned int iWidth;
|
|
unsigned int iHeight;
|
|
unsigned int iCover;
|
|
unsigned int iPasses;
|
|
float fFrequencyStep;
|
|
float fFrequency;
|
|
unsigned int iSmoothness;
|
|
unsigned int iRandom;
|
|
float fFade;
|
|
float iSharpness;
|
|
bool bBlueSky;
|
|
bool bValid; // Used internally to verify serialized data, no
|
|
// need to set it from outside the class
|
|
};
|
|
|
|
#define RANDMASK RAND_MAX
|
|
#define MRANDOM (float)(rand() & (RANDMASK))/(RANDMASK)
|
|
#define SRANDOM ((MRANDOM) * 2) - 1
|
|
|
|
// Basis matrix for spline interpolation
|
|
#define CR00 -0.5f
|
|
#define CR01 1.5f
|
|
#define CR02 -1.5f
|
|
#define CR03 0.5f
|
|
#define CR10 1.0f
|
|
#define CR11 -2.5f
|
|
#define CR12 2.0f
|
|
#define CR13 -0.5f
|
|
#define CR20 -0.5f
|
|
#define CR21 0.0f
|
|
#define CR22 0.5f
|
|
#define CR23 0.0f
|
|
#define CR30 0.0f
|
|
#define CR31 1.0f
|
|
#define CR32 0.0f
|
|
#define CR33 0.0f
|
|
|
|
class CNoise
|
|
{
|
|
public:
|
|
CNoise();
|
|
virtual ~CNoise();
|
|
|
|
void FracSynthPass(CDynamicArray2D *hBuf, float freq, float zscale, int xres, int zres, BOOL bLoop);
|
|
float Spline(float x, /*int nknots,*/ float *knot);
|
|
|
|
};
|
|
|
|
#endif // !defined(AFX_NOISE_H__D47F4AD3_03B3_4E25_957A_697628BCDDEA__INCLUDED_)
|