182 Commits

Author SHA1 Message Date
125c96c25f transformations: implement view_transform. 2021-07-17 17:40:35 -07:00
249a2915d9 matrices: minor tweaks to make debugging easier. 2021-07-17 17:40:14 -07:00
9f00485256 Use WHITE and BLACK constants where appropriate 2021-07-17 16:41:22 -07:00
b37398ac40 world: implement World::color_at 2021-07-17 16:12:30 -07:00
86d052d38b materials: use crate definition for BLACK. 2021-07-17 16:12:04 -07:00
b3737dcd5f lib: add constants for BLACK and WHITE colors. 2021-07-17 16:11:31 -07:00
72c6944ab9 world: implement World::shade_hit. 2021-07-17 15:58:57 -07:00
9924330f98 intersections: add inside/outside to prepare_computations. 2021-07-17 15:46:02 -07:00
2316df896a intersections: implement basic prepare_computations. 2021-07-17 15:37:46 -07:00
2c79132ebc world: cleanup lint 2021-07-17 15:37:25 -07:00
e9f2ef0118 world: implement World::intersect. 2021-07-17 15:26:18 -07:00
eebdc270eb world: add test_world constructor for book tests. 2021-07-17 15:12:56 -07:00
3bc9f6f924 world: add default empty World constructor. 2021-07-17 15:07:14 -07:00
cbecaa70ef eoc6: implement challenge for end of chapter 6. 2021-07-17 10:10:38 -07:00
6863b4ecd6 materials: small correction to specular computation. 2021-07-17 10:09:46 -07:00
bad54bb433 eoc5: remove unnecessary import. 2021-07-17 10:09:10 -07:00
d8e5476806 materials: implement Phong lighting. 2021-07-17 09:31:23 -07:00
385ed70d88 tuples: implement EPSILON aware PartialEq for Color.
Mark Color::new const so it can be used in const expressions (like
predefining colors).
2021-07-17 09:30:28 -07:00
1cbfbc8641 spheres: add material to Sphere. 2021-07-17 09:07:08 -07:00
81540cd484 rustfmt: add config to format code in doc comments. 2021-07-17 09:04:54 -07:00
b4428f924c lights & materials: implement the default light and material types. 2021-07-17 08:59:02 -07:00
bcf847660a tuples: implement reflect. 2021-07-17 08:50:26 -07:00
e529710d5d spheres: fix normal_at for transformed spheres. 2021-07-17 08:44:26 -07:00
339ce84903 tuples: whitespace cleanup for consistency. 2021-07-17 07:58:15 -07:00
6e7bd1c136 spheres: implement normal_at. 2021-07-17 07:57:59 -07:00
e430e3769e canvas: add parameter to constructor to set background color.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-16 22:33:22 -07:00
7609201c16 canvas: use ugly pink for default color to ease in debugging. 2021-07-16 22:28:05 -07:00
4bb6a72e4b eoc5: implement suggestiong at end of chapter 5.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-16 22:25:48 -07:00
cb1b3ec801 sphere: use Intersections as the return type from intersect. 2021-07-16 22:25:26 -07:00
ad7b10322f spheres: enable intersect w/ transformed spheres. 2021-07-16 22:06:37 -07:00
6e73bab37f s/translate/translation/g to match book. 2021-07-16 21:49:49 -07:00
87bf924094 spheres: add transform member to Sphere 2021-07-16 21:48:12 -07:00
9f22d820e7 rays: implement Ray::transform 2021-07-16 21:38:04 -07:00
324a26212a intersections: implement Intersections::hit 2021-07-16 21:28:28 -07:00
c9b42d94b3 intersections: now store object in Intersection. 2021-07-16 21:14:23 -07:00
0ce1e8f7af intersections: create inters module and initial functionality. 2021-07-16 21:06:57 -07:00
8b451a2395 rays: lint cleanup 2021-07-16 21:06:23 -07:00
da98744288 spheres: implement basic unit sphere and intersect. 2021-07-16 20:42:46 -07:00
f44d671573 rays: basic ray with construction and position methods 2021-07-16 20:13:20 -07:00
191760fa13 eoc4: lint cleanup. 2021-07-16 20:12:51 -07:00
12c2382327 eoc4: use Matrix4x4 to perform world to canvas scaling.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-16 19:59:42 -07:00
5df2917668 eoc4: implement suggestion at the end of chapter 4 2021-07-16 17:12:48 -07:00
af5e61136c matrices: doctest for matrix multiplication ordering. 2021-07-16 16:51:55 -07:00
4b0d882b84 lib & tuples: use crate specific EPSILON definition. 2021-07-16 16:49:55 -07:00
83799a02a9 matrices: implement Matrix4x4::shearing 2021-07-16 16:38:40 -07:00
b8df830460 tuples & matrices: remove float-cmp use.
All checks were successful
continuous-integration/drone/push Build is passing
Implement PartialEq on `Tuple` and `Matrix4x4` using a local `EPSILON`
large enough for our unit tests to pass.
2021-07-06 08:44:21 -07:00
245b02b443 matrices: implement Matrix4x4:rotation_[xyz] 2021-07-05 18:36:43 -07:00
f792d1a626 matrices: implement Matrix4x4::scaling 2021-07-05 17:51:17 -07:00
117d7185e4 matrices: implement Matrix4x4::translate 2021-07-05 17:42:19 -07:00
462c90e8c8 matrices: benchmark Matrix::inverse & inverse_old
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-05 16:44:06 -07:00