def test_color2(self):
     c1 = Color(0.9, 0.6, 0.75)
     c2 = Color(0.7, 0.1, 0.25)
     c3 = c1 + c2
     self.assertTrue(equals(c3.x, 1.6))
     self.assertTrue(equals(c3.y, 0.7))
     self.assertTrue(equals(c3.z, 1))
 def test_color3(self):
     c1 = Color(0.9, 0.6, 0.75)
     c2 = Color(0.7, 0.1, 0.25)
     c3 = c1 - c2
     self.assertTrue(equals(c3.x, 0.2))
     self.assertTrue(equals(c3.y, 0.5))
     self.assertTrue(equals(c3.z, 0.5))
 def test_ray_intersects_cube_7(self):
     c = Cube()
     r = Ray(Point(0, 0.5, 0), Vector(0, 0, 1))
     xs = c.local_intersect(r)
     self.assertTrue(equals(xs.count, 2))
     self.assertTrue(equals(-1, xs[0].t))
     self.assertTrue(equals(1, xs[1].t))
 def test_create1(self):
     c = Canvas(10, 20)
     self.assertTrue(equals(10, c.width))
     self.assertTrue(equals(20, c.height))
     for i in range(10):
         for j in range(20):
             pixel = c.pixels[j][i]
             self.assertTrue(pixel.equals(Color(0, 0, 0)))
示例#5
0
 def test_a_ray_strikes_a_cylinder3(self):
     cyl = Cylinder()
     direction = Vector(0.1, 1, 1).normalize()
     r = Ray(Point(0.5, 0, -5), direction)
     xs = cyl.local_intersect(r)
     self.assertEqual(2, xs.count)
     self.assertTrue(equals(6.80798, xs[0].t))
     self.assertTrue(equals(7.08872, xs[1].t))
示例#6
0
 def test_a_ray_strikes_a_cylinder1(self):
     cyl = Cylinder()
     direction = Vector(0, 0, 1).normalize()
     r = Ray(Point(1, 0, -5), direction)
     xs = cyl.local_intersect(r)
     self.assertEqual(2, xs.count)
     self.assertTrue(equals(5.0, xs[0].t))
     self.assertTrue(equals(5.0, xs[1].t))
 def test_schlick_approximation_with_small_angle_and_n2_larger_than_n1(self):
     shape = GlassSphere()
     r = Ray(Point(0, 0.99, -2), Vector(0, 0, 1))
     ls = [
         Intersection(1.8589, shape),
     ]
     xs = Intersections(ls)
     comps = xs[0].prepare_computations(r, xs)
     reflectance = comps.schlick()
     self.assertTrue(equals(reflectance, 0.48873))
 def test_schlick_approximation_under_total_internal_reflection(self):
     shape = GlassSphere()
     r = Ray(Point(0, 0, sqrt(2)/2), Vector(0, 1, 0))
     ls = [
         Intersection(-sqrt(2)/2, shape),
         Intersection(sqrt(2)/2, shape)
     ]
     xs = Intersections(ls)
     comps = xs[1].prepare_computations(r, xs)
     reflectance = comps.schlick()
     self.assertTrue(equals(reflectance, 1.0))
 def test_schlick_approximation_with_perpendicular_viewing_angle(self):
     shape = GlassSphere()
     r = Ray(Point(0, 0, 0), Vector(0, 1, 0))
     ls = [
         Intersection(-1, shape),
         Intersection(1, shape)
     ]
     xs = Intersections(ls)
     comps = xs[1].prepare_computations(r, xs)
     reflectance = comps.schlick()
     self.assertTrue(equals(reflectance, 0.04))
示例#10
0
def equals(A, B):
    assert A.size == B.size, "input array have different length {} and {}".foramt(
        len(A), len(B))
    for j in range(A.size):
        assert len(A[j]) == len(
            B[j]), "input array have different length {} and {}".foramt(
                len(A[j]), len(B[j]))
        for i in range(len(A[j])):
            equal = misc.equals(A[j][i], B[j][i])
            if not equal:
                return False
    return True
 def test_color1(self):
     c = Color(-0.5, 0.4, 1.7)
     self.assertTrue(equals(c.x, -0.5))
     self.assertTrue(equals(c.y, 0.4))
     self.assertTrue(equals(c.z, 1.7))
 def test_camera3(self):
     c = Camera(125, 200, pi / 2)
     self.assertTrue(equals(c.pixel_size, 0.01))
 def test_ray_miss_cube5(self):
     c = Cube()
     r = Ray(Point(0, 2, 2), Vector(0, -1, 0))
     xs = c.local_intersect(r)
     self.assertTrue(equals(0, xs.count))
示例#14
0
 def equals(self, v):
     return equals(self.x, v.x) and \
             equals(self.y, v.y) and \
             equals(self.z, v.z) and \
             equals(self.w, v.w)
 def test_color4(self):
     c1 = Color(0.2, 0.3, 0.4)
     c2 = c1 * 2
     self.assertTrue(equals(c2.x, 0.4))
     self.assertTrue(equals(c2.y, 0.6))
     self.assertTrue(equals(c2.z, 0.8))
 def test_ray_miss_cube3(self):
     c = Cube()
     r = Ray(Point(0, 0, -2), Vector(0.5345, 0.8018, 0.2673))
     xs = c.local_intersect(r)
     self.assertTrue(equals(0, xs.count))
 def test_nor3(self):
     v = Vector(1, 2, 3)
     self.assertTrue(equals(1, v.normal().mag()))
 def test_mag5(self):
     v = Vector(-1, -2, -3)
     self.assertTrue(equals(sqrt(14), v.mag()))
 def test_mag4(self):
     v = Vector(1, 2, 3)
     self.assertTrue(equals(sqrt(14), v.mag()))
 def test_mag3(self):
     v = Vector(0, 0, 1)
     self.assertTrue(equals(1, v.mag()))
 def test_mag1(self):
     v = Vector(1, 0, 0)
     self.assertTrue(equals(1, v.mag()))