56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#ifndef FRACTALNOISE_H
|
|
#define FRACTALNOISE_H
|
|
|
|
#include "basics_global.h"
|
|
|
|
#include "NoiseState.h"
|
|
|
|
namespace paysages {
|
|
namespace basics {
|
|
|
|
/*!
|
|
* \brief Fractal noise generator, based on a sum of simple noise functions.
|
|
*/
|
|
class BASICSSHARED_EXPORT FractalNoise {
|
|
public:
|
|
FractalNoise();
|
|
virtual ~FractalNoise();
|
|
|
|
inline double getScaling() const {
|
|
return scaling;
|
|
}
|
|
inline double getHeight() const {
|
|
return height;
|
|
}
|
|
inline double getStepScaling() const {
|
|
return step_scaling;
|
|
}
|
|
inline double getStepHeight() const {
|
|
return step_height;
|
|
}
|
|
|
|
void setScaling(double scaling, double height = 1.0);
|
|
void setStep(double scaling_factor, double height_factor = 1.0);
|
|
void setState(const NoiseState &state);
|
|
|
|
double get1d(double detail, double x) const;
|
|
double get2d(double detail, double x, double y) const;
|
|
double get3d(double detail, double x, double y, double z) const;
|
|
|
|
virtual double getBase1d(double x) const;
|
|
virtual double getBase2d(double x, double y) const;
|
|
virtual double getBase3d(double x, double y, double z) const = 0;
|
|
|
|
private:
|
|
NoiseState state;
|
|
|
|
double scaling;
|
|
double height;
|
|
double step_scaling;
|
|
double step_height;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // FRACTALNOISE_H
|