00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef NOISE_MODULE_CURVE_H
00024 #define NOISE_MODULE_CURVE_H
00025
00026 #include "modulebase.h"
00027
00028 namespace CS {
00029 namespace Math {
00030 namespace Noise {
00031 namespace Module {
00032
00035
00039 struct ControlPoint
00040 {
00041
00043 double inputValue;
00044
00046 double outputValue;
00047
00048 };
00049
00052
00055
00080 class CS_CRYSTALSPACE_EXPORT Curve: public Module
00081 {
00082
00083 public:
00084
00086 Curve ();
00087
00089 ~Curve ();
00090
00102 void AddControlPoint (double inputValue, double outputValue);
00103
00107 void ClearAllControlPoints ();
00108
00119 const ControlPoint* GetControlPointArray () const
00120 {
00121 return m_pControlPoints;
00122 }
00123
00127 int GetControlPointCount () const
00128 {
00129 return m_controlPointCount;
00130 }
00131
00132 virtual int GetSourceModuleCount () const
00133 {
00134 return 1;
00135 }
00136
00137 virtual double GetValue (double x, double y, double z) const;
00138
00139 protected:
00140
00157 int FindInsertionPos (double inputValue);
00158
00175 void InsertAtPos (int insertionPos, double inputValue,
00176 double outputValue);
00177
00179 int m_controlPointCount;
00180
00182 ControlPoint* m_pControlPoints;
00183
00184 };
00185
00187
00189
00191
00192 }
00193 }
00194 }
00195 }
00196
00197 #endif