def test_the_view_transformation_moves_the_world(): # Given f = Point(0, 0, 8) to = Point(0, 0, 0) up = Vector(0, 1, 0) # When t = view_transform(f, to, up) # Then assert t == translation(0, 0, -8)
def test_a_view_transformation_matrix_looking_in_positive_z_direction(): # Given f = Point(0, 0, 0) to = Point(0, 0, 1) up = Vector(0, 1, 0) # When t = view_transform(f, to, up) # Then assert t == scaling(-1, 1, -1)
def test_the_transformation_matrix_for_the_default_orientation(): # Given f = Point(0, 0, 0) # from to = Point(0, 0, -1) up = Vector(0, 1, 0) # When t = view_transform(f, to, up) # Then assert t == identity_matrix()
def test_an_arbitray_view_transformation(): # Given f = Point(1, 3, 2) to = Point(4, -2, 8) up = Vector(1, 1, 0) # When t = view_transform(f, to, up) # Then assert t == Matrix(-0.50709, 0.50709, 0.67612, -2.36643, 0.76772, 0.60609, 0.12122, -2.82843, -0.35857, 0.59761, -0.71714, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000)
def test_rendering_a_world_with_a_camera(): # Given w = default_world() c = Camera(11, 11, pi / 2) f = Point(0, 0, -5) to = Point(0, 0, 0) up = Vector(0, 1, 0) c.transform = view_transform(f, to, up) # When image = c.render(w) # Then assert image.pixel_at(5, 5) == Color(0.38066, 0.47583, 0.2855)
# right.material.pattern = pattern # right.material.diffuse = 0.7 # right.material.specular = 0.3 right.material.diffuse = 0 right.material.specular = 0 left = Sphere() left.transform = translation(-1.5, 0.33, -0.75) * scaling(0.33, 0.33, 0.33) left.material = Material() left.material.color = Color(1, 0.8, 0.1) # left.material.pattern = pattern left.material.diffuse = 0.7 left.material.specular = 0.3 cube = Cube() cube.transform = translation( 0, 0, 1) * rotation_y(pi / 4) * scaling(0.5, 0.5, 0.5) world = World() # world.objects = [floor, backdrop, backdrop2, middle, right, left] world.objects = [cube] world.light = PointLight(Point(-10, 10, -10), Color(1, 1, 1)) camera = Camera(100, 50, pi / 3) camera.transform = view_transform(Point(0, 1.5, -5), Point(0, 1, 0), Vector(0, 1, 0)) canvas = camera.render(world) print(canvas.to_ppm())