Skip to content

Commit 1473cba

Browse files
rupsishollasch
authored andcommitted
Resolves #1483
1 parent 4d65783 commit 1473cba

File tree

3 files changed

+31
-79
lines changed

3 files changed

+31
-79
lines changed

books/RayTracingTheNextWeek.html

Lines changed: 15 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1989,21 +1989,13 @@
19891989
class perlin {
19901990
public:
19911991
perlin() {
1992-
randfloat = new double[point_count];
19931992
for (int i = 0; i < point_count; i++) {
19941993
randfloat[i] = random_double();
19951994
}
19961995

1997-
perm_x = perlin_generate_perm();
1998-
perm_y = perlin_generate_perm();
1999-
perm_z = perlin_generate_perm();
2000-
}
2001-
2002-
~perlin() {
2003-
delete[] randfloat;
2004-
delete[] perm_x;
2005-
delete[] perm_y;
2006-
delete[] perm_z;
1996+
perlin_generate_perm(perm_x);
1997+
perlin_generate_perm(perm_y);
1998+
perlin_generate_perm(perm_z);
20071999
}
20082000

20092001
double noise(const point3& p) const {
@@ -2016,20 +2008,16 @@
20162008

20172009
private:
20182010
static const int point_count = 256;
2019-
double* randfloat;
2020-
int* perm_x;
2021-
int* perm_y;
2022-
int* perm_z;
2023-
2024-
static int* perlin_generate_perm() {
2025-
auto p = new int[point_count];
2011+
double randfloat[point_count];
2012+
int perm_x[point_count];
2013+
int perm_y[point_count];
2014+
int perm_z[point_count];
20262015

2016+
static void perlin_generate_perm(int* p) {
20272017
for (int i = 0; i < point_count; i++)
20282018
p[i] = i;
20292019

20302020
permute(p, point_count);
2031-
2032-
return p;
20332021
}
20342022

20352023
static void permute(int* p, int n) {
@@ -2309,39 +2297,27 @@
23092297
class perlin {
23102298
public:
23112299
perlin() {
2312-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
2313-
randvec = new vec3[point_count];
2314-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
23152300
for (int i = 0; i < point_count; i++) {
23162301
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
23172302
randvec[i] = unit_vector(vec3::random(-1,1));
23182303
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
23192304
}
23202305

2321-
perm_x = perlin_generate_perm();
2322-
perm_y = perlin_generate_perm();
2323-
perm_z = perlin_generate_perm();
2324-
}
2325-
2326-
~perlin() {
2327-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
2328-
delete[] randvec;
2329-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
2330-
delete[] perm_x;
2331-
delete[] perm_y;
2332-
delete[] perm_z;
2306+
perlin_generate_perm(perm_x);
2307+
perlin_generate_perm(perm_y);
2308+
perlin_generate_perm(perm_z);
23332309
}
23342310

23352311
...
23362312

23372313
private:
23382314
static const int point_count = 256;
23392315
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
2340-
vec3* randvec;
2316+
vec3 randvec[point_count];
23412317
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
2342-
int* perm_x;
2343-
int* perm_y;
2344-
int* perm_z;
2318+
int perm_x[point_count];
2319+
int perm_y[point_count];
2320+
int perm_z[point_count];
23452321
...
23462322
};
23472323
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/TheNextWeek/perlin.h

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,13 @@
1717
class perlin {
1818
public:
1919
perlin() {
20-
randvec = new vec3[point_count];
2120
for (int i = 0; i < point_count; i++) {
2221
randvec[i] = unit_vector(vec3::random(-1,1));
2322
}
2423

25-
perm_x = perlin_generate_perm();
26-
perm_y = perlin_generate_perm();
27-
perm_z = perlin_generate_perm();
28-
}
29-
30-
~perlin() {
31-
delete[] randvec;
32-
delete[] perm_x;
33-
delete[] perm_y;
34-
delete[] perm_z;
24+
perlin_generate_perm(perm_x);
25+
perlin_generate_perm(perm_y);
26+
perlin_generate_perm(perm_z);
3527
}
3628

3729
double noise(const point3& p) const {
@@ -72,20 +64,16 @@ class perlin {
7264

7365
private:
7466
static const int point_count = 256;
75-
vec3* randvec;
76-
int* perm_x;
77-
int* perm_y;
78-
int* perm_z;
79-
80-
static int* perlin_generate_perm() {
81-
auto p = new int[point_count];
67+
vec3 randvec[point_count];
68+
int perm_x[point_count];
69+
int perm_y[point_count];
70+
int perm_z[point_count];
8271

72+
static void perlin_generate_perm(int* p) {
8373
for (int i = 0; i < point_count; i++)
8474
p[i] = i;
8575

8676
permute(p, point_count);
87-
88-
return p;
8977
}
9078

9179
static void permute(int* p, int n) {

src/TheRestOfYourLife/perlin.h

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,13 @@
1717
class perlin {
1818
public:
1919
perlin() {
20-
randvec = new vec3[point_count];
2120
for (int i = 0; i < point_count; i++) {
2221
randvec[i] = unit_vector(vec3::random(-1,1));
2322
}
2423

25-
perm_x = perlin_generate_perm();
26-
perm_y = perlin_generate_perm();
27-
perm_z = perlin_generate_perm();
28-
}
29-
30-
~perlin() {
31-
delete[] randvec;
32-
delete[] perm_x;
33-
delete[] perm_y;
34-
delete[] perm_z;
24+
perlin_generate_perm(perm_x);
25+
perlin_generate_perm(perm_y);
26+
perlin_generate_perm(perm_z);
3527
}
3628

3729
double noise(const point3& p) const {
@@ -72,20 +64,16 @@ class perlin {
7264

7365
private:
7466
static const int point_count = 256;
75-
vec3* randvec;
76-
int* perm_x;
77-
int* perm_y;
78-
int* perm_z;
79-
80-
static int* perlin_generate_perm() {
81-
auto p = new int[point_count];
67+
vec3 randvec[point_count];
68+
int perm_x[point_count];
69+
int perm_y[point_count];
70+
int perm_z[point_count];
8271

72+
static void perlin_generate_perm(int* p) {
8373
for (int i = 0; i < point_count; i++)
8474
p[i] = i;
8575

8676
permute(p, point_count);
87-
88-
return p;
8977
}
9078

9179
static void permute(int* p, int n) {

0 commit comments

Comments
 (0)