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