Gamedev Framework (gf)  0.3.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  * @ingroup core
33  * @brief 2D A noise function
34  */
35  class GF_API Noise2D {
36  public:
37  /**
38  * @brief Virtual destructor
39  */
40  virtual ~Noise2D();
41 
42  /**
43  * @brief Take a 2D noise value
44  *
45  * @param x The x coordinate of the noise value
46  * @param y The y coordinate of the noise value
47  * @return The noise value
48  */
49  virtual double getValue(double x, double y) = 0;
50 
51  /**
52  * @brief Take a 2D noise value
53  *
54  * @param x The x coordinate of the noise value
55  * @param y The y coordinate of the noise value
56  * @return The noise value
57  *
58  * @sa getValue()
59  */
60  double operator()(double x, double y) {
61  return getValue(x, y);
62  }
63 
64  };
65 
66 
67  /**
68  * @ingroup core
69  * @brief 3D A noise function
70  */
71  class GF_API Noise3D {
72  public:
73  /**
74  * @brief Virtual destructor
75  */
76  virtual ~Noise3D();
77 
78  /**
79  * @brief Take a 3D noise value
80  *
81  * @param x The x coordinate of the noise value
82  * @param y The y coordinate of the noise value
83  * @param z The z coordinate of the noise value
84  * @return The noise value
85  */
86  virtual double getValue(double x, double y, double z) = 0;
87 
88  /**
89  * @brief Take a 3D noise value
90  *
91  * @param x The x coordinate of the noise value
92  * @param y The y coordinate of the noise value
93  * @param z The z coordinate of the noise value
94  * @return The noise value
95  */
96  double operator()(double x, double y, double z) {
97  return getValue(x, y, z);
98  }
99  };
100 
101 #ifndef DOXYGEN_SHOULD_SKIP_THIS
102 }
103 #endif
104 }
105 
106 #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:35
3D A noise function
Definition: Noise.h:71
double operator()(double x, double y)
Take a 2D noise value.
Definition: Noise.h:60
Definition: Action.h:34
double operator()(double x, double y, double z)
Take a 3D noise value.
Definition: Noise.h:96
virtual double getValue(double x, double y)=0
Take a 2D noise value.
virtual ~Noise2D()
Virtual destructor.
#define GF_API
Definition: Portability.h:35