CrystalSpace

Public API Reference

cstool/noise/module/displace.h
00001 // displace.h
00002 //
00003 // Copyright (C) 2003, 2004 Jason Bevins
00004 //
00005 // This library is free software; you can redistribute it and/or modify it
00006 // under the terms of the GNU Lesser General Public License as published by
00007 // the Free Software Foundation; either version 2.1 of the License, or (at
00008 // your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful, but WITHOUT
00011 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
00013 // License (COPYING.txt) for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public License
00016 // along with this library; if not, write to the Free Software Foundation,
00017 // Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //
00019 // The developer's email is jlbezigvins@gmzigail.com (for great email, take
00020 // off every 'zig'.)
00021 //
00022 
00023 #ifndef NOISE_MODULE_DISPLACE_H
00024 #define NOISE_MODULE_DISPLACE_H
00025 
00026 #include "modulebase.h"
00027 
00028 namespace CS {
00029 namespace Math {
00030 namespace Noise {
00031 namespace Module {
00032 
00035 
00038 
00042 
00068     class CS_CRYSTALSPACE_EXPORT Displace: public Module
00069     {
00070 
00071       public:
00072 
00074       Displace ();
00075 
00076       virtual int GetSourceModuleCount () const
00077       {
00078         return 4;
00079       }
00080 
00081       virtual double GetValue (double x, double y, double z) const;
00082 
00097       const Module& GetXDisplaceModule () const
00098       {
00099         if (m_pSourceModule == NULL || m_pSourceModule[1] == NULL) {
00100           //throw CS::Math::Noise::ExceptionNoModule ();
00101           CS_ASSERT (false);
00102         }
00103         return *(m_pSourceModule[1]);
00104       }
00105 
00120       const Module& GetYDisplaceModule () const
00121       {
00122         if (m_pSourceModule == NULL || m_pSourceModule[2] == NULL) {
00123           //throw CS::Math::Noise::ExceptionNoModule ();
00124           CS_ASSERT (false);
00125         }
00126         return *(m_pSourceModule[2]);
00127       }
00128 
00143       const Module& GetZDisplaceModule () const
00144       {
00145         if (m_pSourceModule == NULL || m_pSourceModule[3] == NULL) {
00146           //throw CS::Math::Noise::ExceptionNoModule ();
00147           CS_ASSERT (false);
00148         }
00149         return *(m_pSourceModule[3]);
00150       }
00151 
00172       void SetDisplaceModules (const Module& xDisplaceModule,
00173         const Module& yDisplaceModule, const Module& zDisplaceModule)
00174       {
00175         SetXDisplaceModule (xDisplaceModule);
00176         SetYDisplaceModule (yDisplaceModule);
00177         SetZDisplaceModule (zDisplaceModule);
00178       }
00179 
00197       void SetXDisplaceModule (const Module& xDisplaceModule)
00198       {
00199         assert (m_pSourceModule != NULL);
00200         m_pSourceModule[1] = &xDisplaceModule;
00201       }
00202 
00220       void SetYDisplaceModule (const Module& yDisplaceModule)
00221       {
00222         assert (m_pSourceModule != NULL);
00223         m_pSourceModule[2] = &yDisplaceModule;
00224       }
00225 
00243       void SetZDisplaceModule (const Module& zDisplaceModule)
00244       {
00245         assert (m_pSourceModule != NULL);
00246         m_pSourceModule[3] = &zDisplaceModule;
00247       }
00248 
00249     };
00250 
00252 
00254 
00256 
00257 } // namespace Module
00258 } // namespace Noise
00259 } // namespace Math
00260 } // namespace CS
00261 
00262 #endif

Generated for Crystal Space 2.0 by doxygen 1.7.6.1