diff options
| author | Martin Lehoux <martin@lehoux.net> | 2020-04-04 14:50:39 -0700 |
|---|---|---|
| committer | Martin Lehoux <martin@lehoux.net> | 2020-04-04 14:50:39 -0700 |
| commit | 4fbf7c999dd9aabd19a8b66d32461ad4c2722dc3 (patch) | |
| tree | c4f2d04ce40575f324bacea1efbeb35b536790ff | |
| parent | d0ad46a4ba7d1b5396a37af1500a8db7ce2be195 (diff) | |
feat - Sky scene
| -rw-r--r-- | color.go | 5 | ||||
| -rw-r--r-- | main.go | 12 |
2 files changed, 12 insertions, 5 deletions
@@ -15,3 +15,8 @@ func LinearBlend(color1 Color, color2 Color, param float64) Color { param*color1.b + (1.0-param)*color2.b, } } + +func RayColor(ray Ray) Color { + 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) +} @@ -4,14 +4,16 @@ const HEIGHT = 100 const WIDTH = 200 func main() { + LOWER_LEFT_CORNER := Vec3D{-2.0, -1.0, -1.0} + ORIGIN := Vec3D{0.0, 0.0, 0.0} + HORIZONTAL := Vec3D{4.0, 0.0, 0.0} + VERTICAL := Vec3D{0.0, 2.0, 0.0} frame := Frame{} for x := 0; x < HEIGHT; x++ { for y := 0; y < WIDTH; y++ { - color := Color{ - float64(y) / float64(WIDTH), - float64(x) / float64(HEIGHT), - 0.2, - } + u, v := float64(y)/float64(WIDTH), float64(x)/float64(HEIGHT) + ray := Ray{ORIGIN, AddVec3D(AddVec3D(LOWER_LEFT_CORNER, ScalarProduct(u, HORIZONTAL)), ScalarProduct(v, VERTICAL))} + color := RayColor(ray) frame[HEIGHT-1-x][y] = color.ToPixel() } } |
