CrystalSpace

Public API Reference

cstool/noise/module/terrace.h
00001 // terrace.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_TERRACE_H
00024 #define NOISE_MODULE_TERRACE_H
00025 
00026 #include "modulebase.h"
00027 
00028 namespace CS {
00029 namespace Math {
00030 namespace Noise {
00031 namespace Module {
00032 
00035 
00038 
00041 
00072     class CS_CRYSTALSPACE_EXPORT Terrace: public Module
00073     {
00074 
00075             public:
00076 
00078               Terrace ();
00079 
00081               ~Terrace ();
00082 
00097               void AddControlPoint (double value);
00098 
00102               void ClearAllControlPoints ();
00103 
00120               const double* GetControlPointArray () const
00121               {
00122                 return m_pControlPoints;
00123               }
00124 
00129               int GetControlPointCount () const
00130               {
00131                 return m_controlPointCount;
00132               }
00133 
00134           virtual int GetSourceModuleCount () const
00135               {
00136                 return 1;
00137               }
00138 
00144               void InvertTerraces (bool invert = true)
00145               {
00146                 m_invertTerraces = invert;
00147               }
00148 
00156         bool IsTerracesInverted () const
00157         {
00158                 return m_invertTerraces;
00159         }
00160 
00161           virtual double GetValue (double x, double y, double z) const;
00162 
00180         void MakeControlPoints (int controlPointCount);
00181 
00182         protected:
00183 
00200               int FindInsertionPos (double value);
00201 
00217               void InsertAtPos (int insertionPos, double value);
00218 
00220               int m_controlPointCount;
00221 
00224               bool m_invertTerraces;
00225 
00227               double* m_pControlPoints;
00228 
00229     };
00230 
00232 
00234 
00236 
00237 } // namespace Module
00238 } // namespace Noise
00239 } // namespace Math
00240 } // namespace CS
00241 
00242 #endif

Generated for Crystal Space 2.0 by doxygen 1.7.6.1