00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __UT_NoiseBasis__
00030 #define __UT_NoiseBasis__
00031
00032 #include "UT_API.h"
00033 #include <SYS/SYS_Types.h>
00034
00035 class UT_API UT_NoiseValue {
00036 public:
00037 union {
00038 float myDistance;
00039 int myIDistance;
00040 };
00041 uint mySeed;
00042 };
00043
00044 class UT_API UT_NoiseBasis {
00045 public:
00046 static void initNoise();
00047
00048 static void noise1D(float pos, UT_NoiseValue vals[], int nvals);
00049 static void noise2D(const float pos[2], UT_NoiseValue vals[], int nvals);
00050 static void noise3D(const float pos[3], UT_NoiseValue vals[], int nvals);
00051 static void noise4D(const float pos[4], UT_NoiseValue vals[], int nvals);
00052
00053
00054
00055 static void noise1D(float pos, UT_NoiseValue vals[], int nvals,
00056 uint period);
00057 static void noise2D(const float pos[2], UT_NoiseValue vals[], int nvals,
00058 const uint period[2])
00059 { noise2D(pos, vals, nvals, period[0], period[1]); }
00060 static void noise2D(const float pos[2], UT_NoiseValue vals[], int nvals,
00061 uint periodx, uint periody);
00062 static void noise3D(const float pos[3], UT_NoiseValue vals[], int nvals,
00063 const uint period[3])
00064 {
00065 noise3D(pos, vals, nvals, period[0], period[1],
00066 period[2]);
00067 }
00068 static void noise3D(const float pos[3], UT_NoiseValue vals[], int nvals,
00069 uint periodx, uint periody, uint periodz);
00070 static void noise4D(const float pos[4], UT_NoiseValue vals[], int nvals,
00071 const uint period[4])
00072 {
00073 noise4D(pos, vals, nvals, period[0], period[1],
00074 period[2], period[3]);
00075 }
00076 static void noise4D(const float pos[4], UT_NoiseValue vals[], int nvals,
00077 uint periodx, uint periody, uint periodz,
00078 uint periodw);
00079
00080 static void noise1D(const float P[1], const float *jitter, int *period,
00081 int &seed, float &f1, float &f2, float p0[1], float p1[1]);
00082 static void noise2D(const float P[2], const float *jitter, int *period,
00083 int &seed, float &f1, float &f2, float p0[2], float p1[2]);
00084 static void noise3D(const float P[3], const float *jitter, int *period,
00085 int &seed, float &f1, float &f2, float p0[3], float p1[3]);
00086 static void noise4D(const float P[4], const float *jitter, int *period,
00087 int &seed, float &f1, float &f2, float p0[4], float p1[4]);
00088 private:
00089 };
00090
00091 #endif