1 // blend.cpp
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 
23 #include "blend.h"
24 #include "../interp.h"
25 
26 using namespace noise::module;
27 
Blend()28 Blend::Blend ():
29   Module (GetSourceModuleCount ())
30 {
31 }
32 
GetValue(double x,double y,double z) const33 double Blend::GetValue (double x, double y, double z) const
34 {
35   assert (m_pSourceModule[0] != NULL);
36   assert (m_pSourceModule[1] != NULL);
37   assert (m_pSourceModule[2] != NULL);
38 
39   double v0 = m_pSourceModule[0]->GetValue (x, y, z);
40   double v1 = m_pSourceModule[1]->GetValue (x, y, z);
41   double alpha = (m_pSourceModule[2]->GetValue (x, y, z) + 1.0) / 2.0;
42   return LinearInterp (v0, v1, alpha);
43 }
44