// Noise.h #ifndef Noiseh #define Noiseh #pragma once // Antialias, or smooth noise by multiplying the result by (1-HermiteStep(t,0.2,0.6)) struct Noise { // One Dimensional: static double NoiseFunction(DWORD x); // returns in the interval [-1,1] // MosaicNoise: Each coordinate gives a specific number. // UnsignedMosaicNoise(x/17,y/7,0); will create random rectangles 17 by 7 pixels in size static double Mosaic(DWORD x, DWORD y, DWORD z); static double UnsignedMosaic(DWORD x, DWORD y, DWORD z); // One Dimensional Perlin Noise: static double SmoothedNoise(DWORD x); static double InterpolatedNoise(double x); static double Get(double x, int Octaves, double Persistence); // Persistence [0-1]. 1=All octaves added equally. static double Turbulence(double x, int Octaves, double Persistence); // Two Dimensional Perlin Noise: static double NoiseFunction(DWORD x, DWORD y); // returns in the interval [-1,1] static double SmoothedNoise(DWORD x, DWORD y); static double InterpolatedNoise(double x, double y); static double Get(double x, double y, int Octaves, double Persistence); static double Turbulence(double x, double y, int Octaves, double Persistence); // Three Dimensional Perlin Noise: static double InterpolatedNoise(double x, double y, double z); static double Get(double x, double y, double z, int Octaves, double Persistence); // Returns interval [-1,1] static double Turbulence(double x, double y, double z, int Octaves, double Persistence); private: static double Lerp(double t, double a, double b); static double Grad(int Hash, double x, double y, double z); public: static double Stripes(double x, double y, double z, int Octaves, double Persistence); static double Marble (double x, double y, int Octaves, double Persistence); }; #endif // ndef Noiseh