Skip to content

Commit 32c0aa6

Browse files
authored
Merge pull request #341 from RayTracing/fix-340
Simplify lambertian scatter direction calculation
2 parents f7432bf + ca44051 commit 32c0aa6

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

books/RayTracingInOneWeekend.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1813,8 +1813,8 @@
18131813
virtual bool scatter(
18141814
const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered
18151815
) const {
1816-
vec3 target = rec.p + rec.normal + random_unit_vector();
1817-
scattered = ray(rec.p, target-rec.p);
1816+
vec3 scatter_direction = rec.normal + random_unit_vector();
1817+
scattered = ray(rec.p, scatter_direction);
18181818
attenuation = albedo;
18191819
return true;
18201820
}

books/RayTracingTheNextWeek.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,9 @@
251251
virtual bool scatter(
252252
const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered
253253
) const {
254-
vec3 target = rec.p + rec.normal + random_unit_vector();
254+
vec3 scatter_direction = rec.normal + random_unit_vector();
255255
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
256-
scattered = ray(rec.p, target-rec.p, r_in.time());
256+
scattered = ray(rec.p, scatter_direction, r_in.time());
257257
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
258258
attenuation = albedo;
259259
return true;
@@ -911,8 +911,8 @@
911911
virtual bool scatter(
912912
const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered
913913
) const {
914-
vec3 target = rec.p + rec.normal + random_unit_vector();
915-
scattered = ray(rec.p, target - rec.p);
914+
vec3 scatter_direction = rec.normal + random_unit_vector();
915+
scattered = ray(rec.p, scatter_direction, r_in.time());
916916
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
917917
attenuation = albedo->value(rec.u, rec.v, rec.p);
918918
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
@@ -2459,7 +2459,7 @@
24592459
virtual bool scatter(
24602460
const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered
24612461
) const {
2462-
scattered = ray(rec.p, random_in_unit_sphere());
2462+
scattered = ray(rec.p, random_in_unit_sphere(), r_in.time());
24632463
attenuation = albedo->value(rec.u, rec.v, rec.p);
24642464
return true;
24652465
}

src/InOneWeekend/material.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,10 @@ class lambertian : public material {
7676
virtual bool scatter(
7777
const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered
7878
) const {
79-
vec3 target = rec.p + rec.normal + random_unit_vector();
80-
scattered = ray(rec.p, target-rec.p);
81-
attenuation = albedo;
82-
return true;
79+
vec3 scatter_direction = rec.normal + random_unit_vector();
80+
scattered = ray(rec.p, scatter_direction);
81+
attenuation = albedo;
82+
return true;
8383
}
8484

8585
public:

src/TheNextWeek/material.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ class lambertian : public material {
115115
virtual bool scatter(
116116
const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered
117117
) const {
118-
vec3 target = rec.p + rec.normal + random_unit_vector();
119-
scattered = ray(rec.p, target-rec.p, r_in.time());
118+
vec3 scatter_direction = rec.normal + random_unit_vector();
119+
scattered = ray(rec.p, scatter_direction, r_in.time());
120120
attenuation = albedo->value(rec.u, rec.v, rec.p);
121121
return true;
122122
}

0 commit comments

Comments
 (0)