1 // min.h 2 // 3 // Copyright (C) 2003, 2004 Jason Bevins 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 jlbezigvins@gmzigail.com (for great email, take 20 // off every 'zig'.) 21 // 22 module noise.mod.min; 23 24 private { 25 import noise.mod.modulebase; 26 import noise.misc; 27 } 28 29 /// @addtogroup libnoise 30 /// @{ 31 32 /// @addtogroup modules 33 /// @{ 34 35 /// @addtogroup combinermodules 36 /// @{ 37 38 /// Noise module that outputs the smaller of the two output values from 39 /// two source modules. 40 /// 41 /// @image html modulemin.png 42 /// 43 /// This noise module requires two source modules. 44 class Min : Mod 45 { 46 47 public: 48 49 /// Constructor. 50 this() 51 { 52 super(this.GetSourceModCount()); 53 } 54 55 override int GetSourceModCount () const 56 { 57 return 2; 58 } 59 60 override double GetValue (double x, double y, double z) const 61 { 62 assert (m_pSourceMod[0] !is null); 63 assert (m_pSourceMod[1] !is null); 64 65 double v0 = m_pSourceMod[0].GetValue (x, y, z); 66 double v1 = m_pSourceMod[1].GetValue (x, y, z); 67 return GetMin (v0, v1); 68 } 69 70 }; 71 72 /// @} 73 74 /// @} 75 76 /// @}