Amortized Noise Terrain Generator
A Program to Generate Terrain from Amortized Noise with Exponentially Distributed Gradient Magnitude
InfiniteAmortizedNoise2D.h
Go to the documentation of this file.
1
8
9// Copyright Ian Parberry, September 2013, 2014.
10//
11// This file is made available under the GNU All-Permissive License.
12//
13// Copying and distribution of this file, with or without modification,
14// are permitted in any medium without royalty provided the copyright
15// notice and this notice are preserved. This file is offered as-is,
16// without any warranty.
17//
18// Created by Ian Parberry, September 2013.
19// Last updated May 30, 2014.
20
21#pragma once
22
26
28 protected: //Amortized noise stuff
29 float *uax;
30 float *vax;
31 float *ubx;
32 float *vbx;
33 float *uay;
34 float *vay;
35 float *uby;
36 float *vby;
37 float* spline;
38 unsigned int seed;
39
40 virtual unsigned int h(const unsigned int x, const unsigned int y);
41
42 void FillUp(float* t, const float s, const int n);
43 void FillDn(float* t, const float s, const int n);
44
45 virtual void initEdgeTables(const int x, const int y, const int n);
46 void initSplineTable(const int n);
47
48 float getNoise(const int i, const int j);
49 void getNoise(const int n, const int i0, const int j0, float** cell);
50 void addNoise(const int n, const int i0, const int j0, const float scale, float** cell);
51
52 public:
53 CInfiniteAmortizedNoise2D(const unsigned n, const unsigned int s);
55 float generate(int x, int y, const int m0, const int m1, const int n, float** cell);
56}; //CInfiniteAmortizedNoise2D
The amortized 2D noise class.
Definition: InfiniteAmortizedNoise2D.h:27
virtual void initEdgeTables(const int x, const int y, const int n)
Initialize the amortized noise tables.
Definition: InfiniteAmortizedNoise2D.cpp:91
virtual unsigned int h(const unsigned int x, const unsigned int y)
2D hash function.
Definition: InfiniteAmortizedNoise2D.cpp:79
float * vby
Y coordinate of v used to compute b.
Definition: InfiniteAmortizedNoise2D.h:36
void addNoise(const int n, const int i0, const int j0, const float scale, float **cell)
Add 1 octave of amortized noise into cell.
Definition: InfiniteAmortizedNoise2D.cpp:156
CInfiniteAmortizedNoise2D(const unsigned n, const unsigned int s)
Constructor.
Definition: InfiniteAmortizedNoise2D.cpp:27
float * vbx
X coordinate of v used to compute b.
Definition: InfiniteAmortizedNoise2D.h:32
unsigned int seed
Hash seed.
Definition: InfiniteAmortizedNoise2D.h:38
void FillDn(float *t, const float s, const int n)
Fill amortized noise table top down.
Definition: InfiniteAmortizedNoise2D.cpp:66
float * spline
Spline table.
Definition: InfiniteAmortizedNoise2D.h:37
float * uay
Y coordinate of u used to compute a.
Definition: InfiniteAmortizedNoise2D.h:33
~CInfiniteAmortizedNoise2D()
Destructor.
Definition: InfiniteAmortizedNoise2D.cpp:38
float generate(int x, int y, const int m0, const int m1, const int n, float **cell)
Generate a cell of 2D amortized noise.
Definition: InfiniteAmortizedNoise2D.cpp:172
float * uax
X coordinate of u used to compute a.
Definition: InfiniteAmortizedNoise2D.h:29
void initSplineTable(const int n)
Initialize the spline table.
Definition: InfiniteAmortizedNoise2D.cpp:108
float * ubx
X coordinate of u used to compute b.
Definition: InfiniteAmortizedNoise2D.h:31
float * uby
Y coordinate of u used to compute b.
Definition: InfiniteAmortizedNoise2D.h:35
void FillUp(float *t, const float s, const int n)
Fill amortized noise table bottom up.
Definition: InfiniteAmortizedNoise2D.cpp:54
float * vax
X coordinate of v used to compute a.
Definition: InfiniteAmortizedNoise2D.h:30
float getNoise(const int i, const int j)
Get one point of amortized noise.
Definition: InfiniteAmortizedNoise2D.cpp:122
float * vay
Y coordinate of v used to compute a.
Definition: InfiniteAmortizedNoise2D.h:34