Files
FC1/Editor/Noise.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

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_)