00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __UT_PNoise__
00021 #define __UT_PNoise__
00022
00023 #include "UT_API.h"
00024 #include <SYS/SYS_Types.h>
00025
00026 class UT_Vector3;
00027 class UT_Vector4;
00028
00029 class UT_API UT_PNoise {
00030 public:
00031 static void initNoise();
00032
00033
00034 static float noise1D(float x);
00035 static float noise2D(const float x[2]);
00036 static float noise2D(float x, float y);
00037 static float noise3D(const float x[3]);
00038 static float noise4D(const float x[4]);
00039
00040
00041 static float flownoise2D(const float x[2], float flow);
00042 static float flownoise2D(float x, float y, float flow);
00043 static float flownoise3D(const float x[3], float flow);
00044 static float flownoise4D(const float x[4], float flow);
00045
00046
00047 static void noise1D(fpreal32 *dest, const fpreal32 *src, int n);
00048 static void noise2D(fpreal32 *dest,
00049 const fpreal32 *x, const fpreal32 *y, int n);
00050 static void noise3D(fpreal32 *dest, const UT_Vector3 *src, int n);
00051 static void noise4D(fpreal32 *dest, const UT_Vector4 *src, int n);
00052
00053
00054 static float noise1D(float x, uint period);
00055 static float noise2D(const float x[2], uint period[2]);
00056 static float noise2D(float x, float y, uint px, uint py);
00057 static float noise3D(const float x[3], uint period[3]);
00058 static float noise4D(const float x[4], uint period[4]);
00059
00060
00061 static float flownoise2D(const float x[2], uint period[2], float flow);
00062 static float flownoise2D(float x, float y, uint px, uint py, float flow);
00063 static float flownoise3D(const float x[3], uint period[3], float flow);
00064 static float flownoise4D(const float x[4], uint period[4], float flow);
00065
00066
00067 static void noise1D(float n[3], float x);
00068 static void noise2D(float n[3], const float x[2]);
00069 static void noise2D(float n[3], float x, float y);
00070 static void noise3D(float n[3], const float x[3]);
00071 static void noise4D(float n[3], const float x[4]);
00072
00073
00074 static void flownoise2D(float n[3], const float x[2], float flow);
00075 static void flownoise2D(float n[3], float x, float y, float flow);
00076 static void flownoise3D(float n[3], const float x[3], float flow);
00077 static void flownoise4D(float n[3], const float x[4], float flow);
00078
00079
00080 static void noise1D(UT_Vector3 *dest, const fpreal32 *P, int n);
00081 static void noise2D(UT_Vector3 *dest,
00082 const fpreal32 *x, const fpreal32 *y, int n);
00083 static void noise3D(UT_Vector3 *dest, const UT_Vector3 *P, int n);
00084 static void noise4D(UT_Vector3 *dest, const UT_Vector4 *P, int n);
00085
00086
00087 static void noise1D(float n[3], float x, uint per);
00088 static void noise2D(float n[3], const float x[2], uint per[2]);
00089 static void noise2D(float n[3], float x, float y,
00090 uint px, uint py);
00091 static void noise3D(float n[3], const float x[3], uint per[3]);
00092 static void noise4D(float n[3], const float x[4], uint per[4]);
00093
00094
00095 static void flownoise2D(float n[3], const float x[2], uint per[2], float flow);
00096 static void flownoise2D(float n[3], float x, float y,
00097 uint px, uint py, float flow);
00098 static void flownoise3D(float n[3], const float x[3], uint per[3], float flow);
00099 static void flownoise4D(float n[3], const float x[4], uint per[4], float flow);
00100 };
00101
00102 #endif
00103