Gamedev Framework (gf)  0.2.0
A C++11 framework for 2D games
Noise.h
1 /*
2  * Gamedev Framework (gf)
3  * Copyright (C) 2016 Julien Bernard
4  *
5  * This software is provided 'as-is', without any express or implied
6  * warranty. In no event will the authors be held liable for any damages
7  * arising from the use of this software.
8  *
9  * Permission is granted to anyone to use this software for any purpose,
10  * including commercial applications, and to alter it and redistribute it
11  * freely, subject to the following restrictions:
12  *
13  * 1. The origin of this software must not be misrepresented; you must not
14  * claim that you wrote the original software. If you use this software
15  * in a product, an acknowledgment in the product documentation would be
16  * appreciated but is not required.
17  * 2. Altered source versions must be plainly marked as such, and must not be
18  * misrepresented as being the original software.
19  * 3. This notice may not be removed or altered from any source distribution.
20  */
21 #ifndef GF_NOISE_H
22 #define GF_NOISE_H
23 
24 #include "Portability.h"
25 
26 namespace gf {
27 #ifndef DOXYGEN_SHOULD_SKIP_THIS
28 inline namespace v1 {
29 #endif
30 
31  /**
32  * @brief 2D A noise function
33  */
34  class GF_API Noise2D {
35  public:
36  /**
37  * @brief Virtual destructor
38  */
39  virtual ~Noise2D();
40 
41  /**
42  * @brief Take a 2D noise value
43  *
44  * @param x The x coordinate of the noise value
45  * @param y The y coordinate of the noise value
46  * @return The noise value
47  */
48  virtual double getValue(double x, double y) = 0;
49 
50  /**
51  * @brief Take a 2D noise value
52  *
53  * @param x The x coordinate of the noise value
54  * @param y The y coordinate of the noise value
55  * @return The noise value
56  *
57  * @sa getValue()
58  */
59  double operator()(double x, double y) {
60  return getValue(x, y);
61  }
62 
63  };
64 
65 
66  /**
67  * @brief 3D A noise function
68  */
69  class GF_API Noise3D {
70  public:
71  /**
72  * @brief Virtual destructor
73  */
74  virtual ~Noise3D();
75 
76  /**
77  * @brief Take a 3D noise value
78  *
79  * @param x The x coordinate of the noise value
80  * @param y The y coordinate of the noise value
81  * @param z The z coordinate of the noise value
82  * @return The noise value
83  */
84  virtual double getValue(double x, double y, double z) = 0;
85 
86  /**
87  * @brief Take a 3D noise value
88  *
89  * @param x The x coordinate of the noise value
90  * @param y The y coordinate of the noise value
91  * @param z The z coordinate of the noise value
92  * @return The noise value
93  */
94  double operator()(double x, double y, double z) {
95  return getValue(x, y, z);
96  }
97  };
98 
99 #ifndef DOXYGEN_SHOULD_SKIP_THIS
100 }
101 #endif
102 }
103 
104 #endif // GF_NOISE_H
virtual double getValue(double x, double y, double z)=0
Take a 3D noise value.
virtual ~Noise3D()
Virtual destructor.
2D A noise function
Definition: Noise.h:34
3D A noise function
Definition: Noise.h:69
double operator()(double x, double y)
Take a 2D noise value.
Definition: Noise.h:59
Definition: Action.h:34
double operator()(double x, double y, double z)
Take a 3D noise value.
Definition: Noise.h:94
virtual double getValue(double x, double y)=0
Take a 2D noise value.
virtual ~Noise2D()
Virtual destructor.
#define GF_API
Definition: Portability.h:35