/
perlin.h
48 lines (39 loc) · 1007 Bytes
/
perlin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef PERLIN_H
#define PERLIN_H
#include <stdlib.h>
#include <stdio.h>
#define SAMPLE_SIZE 1024
class Perlin
{
public:
Perlin(int octaves, float freq, float amp, int seed);
float Get(float x, float y, float time)
{
float vec[3];
vec[0] = x;
vec[1] = y;
vec[2] = time;
float ret = perlin_noise_3D(vec);
return ret;
};
private:
void init_perlin(int n, float p);
float perlin_noise_2D(float vec[2]);
float perlin_noise_3D(float vec[3]);
float noise1(float arg);
float noise2(float vec[2]);
float noise3(float vec[3]);
void normalize2(float v[2]);
void normalize3(float v[3]);
void init(void);
int mOctaves;
float mFrequency;
float mAmplitude;
int mSeed;
int p[SAMPLE_SIZE + SAMPLE_SIZE + 2];
float g3[SAMPLE_SIZE + SAMPLE_SIZE + 2][3];
float g2[SAMPLE_SIZE + SAMPLE_SIZE + 2][2];
float g1[SAMPLE_SIZE + SAMPLE_SIZE + 2];
bool mStart;
};
#endif