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 /// @}