From 1e77295876e20702d5ccb477b2f01df980723f04 Mon Sep 17 00:00:00 2001 From: Martin Lehoux Date: Sat, 4 Apr 2020 16:46:06 -0700 Subject: feat - sphere colors --- color.go | 5 +++-- hitable.go | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/color.go b/color.go index dbcb47a..1ac8141 100644 --- a/color.go +++ b/color.go @@ -18,8 +18,9 @@ func LinearBlend(color1 Color, color2 Color, param float64) Color { func RayColor(ray Ray, hitable Hitable) Color { hit := hitable.Hit(ray) - if hit.time > 0 { - return Color{1.0, 0.0, 0.0} + if hit.time > 0.0 { + vec := AddVec3D(hit.normal, Vec3D{1.0, 1.0, 1.0}) + return LinearBlend(Color{vec.x, vec.y, vec.z}, Color{0.0, 0.0, 0.0}, 0.5) } param := 0.5 * (ray.direction.Unit().y + 1) return LinearBlend(Color{0.5, 0.7, 1.0}, Color{1.0, 1.0, 1.0}, param) diff --git a/hitable.go b/hitable.go index 1443110..ed18a5d 100644 --- a/hitable.go +++ b/hitable.go @@ -19,7 +19,7 @@ type Sphere struct { } func (sphere Sphere) Normal(point Vec3D) Vec3D { - return (SubVec3D(point, sphere.center)).Unit() + return SubVec3D(point, sphere.center).Unit() } func (sphere Sphere) Hit(ray Ray) HitRecord { @@ -31,7 +31,7 @@ func (sphere Sphere) Hit(ray Ray) HitRecord { if discriminant < 0 { return HitRecord{} } - time := (-b - math.Sqrt(discriminant)) / 2.0 / a + time := (-b - math.Sqrt(discriminant)) / (2.0 * a) point := ray.PointAt(time) - return HitRecord{time, point, SubVec3D(point, sphere.Normal(point))} + return HitRecord{time, point, sphere.Normal(point)} } -- cgit v1.3