1 // power.h
2 //
3 // Copyright (C) 2004 Owen Jacobson
4 //
5 // This library is free software; you can redistribute it and/or modify it
6 // under the terms of the GNU Lesser General Public License as published by
7 // the Free Software Foundation; either version 2.1 of the License, or (at
8 // your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful, but WITHOUT
11 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
13 // License (COPYING.txt) for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this library; if not, write to the Free Software Foundation,
17 // Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 //
19 // The developer's email is angstrom@lionsanctuary.net
20 //
21 module noise.mod.power;
22 
23 private {
24     import noise.mod.modulebase;
25 }
26 
27 /// @addtogroup libnoise
28 /// @{
29 
30 /// @addtogroup modules
31 /// @{
32 
33 /// @defgroup combinermodules Combiner Mods
34 /// @addtogroup combinermodules
35 /// @{
36 
37 /// Noise module that raises the output value from a first source module
38 /// to the power of the output value from a second source module.
39 ///
40 /// @image html modulepower.png
41 ///
42 /// The first source module must have an index value of 0.
43 ///
44 /// The second source module must have an index value of 1.
45 ///
46 /// This noise module requires two source modules.
47 class Power : Mod
48 {
49 
50   public:
51 
52     /// Constructor.
53     this()
54     {
55         super(this.GetSourceModCount());
56     }
57 
58     override int GetSourceModCount () const
59     {
60       return 2;
61     }
62 
63     override double GetValue (double x, double y, double z) const
64     {
65       assert (m_pSourceMod[0] !is null);
66       assert (m_pSourceMod[1] !is null);
67 
68       return pow (m_pSourceMod[0].GetValue (x, y, z),
69         m_pSourceMod[1].GetValue (x, y, z));
70     }
71 
72 };
73 
74 /// @}
75 
76 /// @}
77 
78 /// @}