My Project
 All Classes Files Functions Variables Enumerations Pages
noise.h
Go to the documentation of this file.
1 /**************************************************************************/
2 /* Copyright 2009 Tim Day */
3 /* */
4 /* This file is part of Fracplanet */
5 /* */
6 /* Fracplanet is free software: you can redistribute it and/or modify */
7 /* it under the terms of the GNU General Public License as published by */
8 /* the Free Software Foundation, either version 3 of the License, or */
9 /* (at your option) any later version. */
10 /* */
11 /* Fracplanet is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public License */
17 /* along with Fracplanet. If not, see <http://www.gnu.org/licenses/>. */
18 /**************************************************************************/
19 
24 #ifndef _noise_h_
25 #define _noise_h_
26 
27 #include "xyz.h"
28 
30 class Noise
31 {
32 public:
33 
35  Noise(uint seed);
36 
38  ~Noise();
39 
41  float operator()(const XYZ& p) const;
42 
43 protected:
44 
46  enum {N=256};
47 
48  int _p[2*N+2];
49  XYZ _g[2*N+2];
50 };
51 
54 {
55  public:
56 
58  MultiscaleNoise(uint seed,uint terms,float decay);
59 
62 
64  float operator()(const XYZ& p) const;
65 
66  private:
67 
69  const uint _terms;
70 
72  boost::scoped_array<boost::scoped_ptr<const Noise> > _noise;
73 
75  boost::scoped_array<float> _amplitude;
76 };
77 
78 #endif
float operator()(const XYZ &p) const
Return noise value at a point.
Definition: noise.cpp:81
~Noise()
Destructor.
Definition: noise.cpp:63
Interface for class XYZ.
MultiscaleNoise(uint seed, uint terms, float decay)
Constructor.
Definition: noise.cpp:132
Multiscale noise generator.
Definition: noise.h:53
Perlin noise generator.
Definition: noise.h:30
Noise(uint seed)
Constructor.
Definition: noise.cpp:28
Class to hold vectors in 3D cartesian co-ordinates.
Definition: xyz.h:34
~MultiscaleNoise()
Destructor.
Definition: noise.cpp:152
float operator()(const XYZ &p) const
Return noise value at a point.
Definition: noise.cpp:156