Skip to content

Commit 0f83efd

Browse files
committed
ray origin() and direction() getters return const&
Update the ray::origin() and ray::direction() functions to return a const reference to their members instead of always making a return value copy.
1 parent 20a870e commit 0f83efd

File tree

5 files changed

+21
-13
lines changed

5 files changed

+21
-13
lines changed

books/RayTracingInOneWeekend.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,8 +508,8 @@
508508

509509
ray(const point3& origin, const vec3& direction) : orig(origin), dir(direction) {}
510510

511-
point3 origin() const { return orig; }
512-
vec3 direction() const { return dir; }
511+
const point3& origin() const { return orig; }
512+
const vec3& direction() const { return dir; }
513513

514514
point3 at(double t) const {
515515
return orig + t*dir;
@@ -526,6 +526,10 @@
526526

527527
</div>
528528

529+
(For those unfamiliar with C++, the functions `ray::origin()` and `ray::direction()` both return an
530+
immutable reference to their members. Callers can either just use the reference directly, or make a
531+
mutable copy depending on their needs.)
532+
529533

530534
Sending Rays Into the Scene
531535
----------------------------

books/RayTracingTheNextWeek.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,12 @@
7878
: orig(origin), dir(direction), tm(time) {}
7979
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
8080

81-
point3 origin() const { return orig; }
82-
vec3 direction() const { return dir; }
81+
const point3& origin() const { return orig; }
82+
const vec3& direction() const { return dir; }
83+
84+
8385
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
84-
double time() const { return tm; }
86+
double time() const { return tm; }
8587
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
8688

8789
point3 at(double t) const {

src/InOneWeekend/ray.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ class ray {
2020

2121
ray(const point3& origin, const vec3& direction) : orig(origin), dir(direction) {}
2222

23-
point3 origin() const { return orig; }
24-
vec3 direction() const { return dir; }
23+
const point3& origin() const { return orig; }
24+
const vec3& direction() const { return dir; }
2525

2626
point3 at(double t) const {
2727
return orig + t*dir;

src/TheNextWeek/ray.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ class ray {
2424
ray(const point3& origin, const vec3& direction, double time)
2525
: orig(origin), dir(direction), tm(time) {}
2626

27-
point3 origin() const { return orig; }
28-
vec3 direction() const { return dir; }
29-
double time() const { return tm; }
27+
const point3& origin() const { return orig; }
28+
const vec3& direction() const { return dir; }
29+
30+
double time() const { return tm; }
3031

3132
point3 at(double t) const {
3233
return orig + t*dir;

src/TheRestOfYourLife/ray.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ class ray {
2424
ray(const point3& origin, const vec3& direction, double time)
2525
: orig(origin), dir(direction), tm(time) {}
2626

27-
point3 origin() const { return orig; }
28-
vec3 direction() const { return dir; }
29-
double time() const { return tm; }
27+
const point3& origin() const { return orig; }
28+
const vec3& direction() const { return dir; }
29+
30+
double time() const { return tm; }
3031

3132
point3 at(double t) const {
3233
return orig + t*dir;

0 commit comments

Comments
 (0)