-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathperlinRuis.h
39 lines (28 loc) · 947 Bytes
/
perlinRuis.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
#pragma once
#include "vrwrkrOpslagDing.h"
#include <algorithm>
#include <vector>
#include <random>
#include <list>
#define PERLIN_AANTAL_GRADIENTEN 8192
class perlinRuis
{
public:
perlinRuis();
~perlinRuis();
void zetKnooppunten(int gradientAdres, int herschikkingsAdres);
glm::vec3 gradient(glm::ivec3 loc);
float geefIniqoQuilesRuis(glm::vec3 x);
static perlinRuis * dePerlin() { return _perlin; }
private:
void maakGradienten();
void maakHerschikkingsTabel();
int vouwFunctie(glm::ivec3 ijk) { return _tabel[ _tabel[ _tabel[ ijk[0] ] + ijk[1] ] + ijk[2] ]; }
std::random_device _willekeur;
std::mt19937 _bemonsteraar;
vrwrkrOpslagDing<glm::vec3> * _willekeurigeGradienten = nullptr;
vrwrkrOpslagDing<int> * _herschikkingsTabel = nullptr;
std::vector<glm::vec3> _gradienten;
std::vector<int> _tabel;
static perlinRuis * _perlin;
};