def test_normalize_1(self): v = data.Vector(3,4,5) l = vector_math.length_vector(v) n = vector_math.normalize_vector(v) ln = vector_math.length_vector(n) self.assertAlmostEqual(ln, 1) self.assertAlmostEqual(n.x, 3/l) self.assertAlmostEqual(n.y, 4/l) self.assertAlmostEqual(n.z, 5/l) pass
def test_normalize_2(self): v = data.Vector(-6, -8, -10) l = vector_math.length_vector(v) n = vector_math.normalize_vector(v) ln = vector_math.length_vector(n) self.assertAlmostEqual(ln, 1) self.assertAlmostEqual(n.x, -6/l) self.assertAlmostEqual(n.y, -8/l) self.assertAlmostEqual(n.z, -10/l) pass
def find_closest(inter,ray): close = vector_math.length_vector(vector_math.vector_from_to(ray.pt,inter[0][1])) sphere = inter[0][0] point = inter[0][1] for (s,p) in inter: distance = vector_math.length_vector(vector_math.vector_from_to(ray.pt,p)) if close > distance: close = distance sphere = s point = p return sphere, point
def findClosestSphere(ray, intersection_list): sphere1 = intersection_list[0][0] point1 = intersection_list[0][1] for spheres in intersection_list: sphere = spheres[0] intersection = spheres[1] minimum_dist = vector_math.length_vector( vector_math.vector_from_to(ray.pt, intersection)) length = vector_math.length_vector( vector_math.vector_from_to(ray.pt, point1)) if minimum_dist < length: sphere1 = sphere point1 = intersection return sphere1, point1
def test_normal_point_3(self): sphere = data.Sphere(data.Point(1, -2, 2), 3, data.Color(0, 1, 0), data.Finish(.2, 1, 0, 0)) point = data.Point(0, 0, 0) l = 3.0 vec = data.Vector(-1 / l, 2 / l, -2 / l) self.assertEqual(collisions.sphere_normal_at_point(sphere, point), vec) self.assertAlmostEqual(vector_math.length_vector(vec), 1)
def getDiffuse(ray, intersection_list, sphere_list, light): closest = findClosestSphere(ray, intersection_list) csphere = closest[0] cpoint = closest[1] normalVec = collisions.sphere_normal_at_point(csphere, cpoint) scaled_vector = vector_math.scale_vector(normalVec, 0.01) p_e = vector_math.translate_point(cpoint, scaled_vector) light_vector = vector_math.vector_from_to(p_e, light.pt) L_dir = vector_math.normalize_vector(light_vector) ldotProduct = vector_math.dot_vector(normalVec, L_dir) light_ray = data.Ray(p_e, L_dir) light_intersections = collisions.find_intersection_points( sphere_list, light_ray) light_distance = vector_math.length_vector(light_vector) if_diffuse = True if ldotProduct > 0: if light_intersections != []: for spheres_and_points in light_intersections: point = spheres_and_points[1] difference_lengths = vector_math.length_vector( vector_math.difference_point(point, p_e)) if difference_lengths < light_distance: if_diffuse = False else: if_diffuse = False if if_diffuse: lClr_r = light.color.r lClr_g = light.color.g lClr_b = light.color.b sp_r = csphere.color.r sp_g = csphere.color.g sp_b = csphere.color.b diff_r = ldotProduct * lClr_r * sp_r * csphere.finish.diffuse diff_g = ldotProduct * lClr_g * sp_g * csphere.finish.diffuse diff_b = ldotProduct * lClr_b * sp_b * csphere.finish.diffuse else: diff_r = 0 diff_g = 0 diff_b = 0 return (diff_r, diff_g, diff_b)
def distance(p1, p2): vector = vector_math.vector_from_to(p1, p2) return vector_math.length_vector(vector)
def test_length_vector_2(self): v_1 = data.Vector(6, 6, 6) self.assertAlmostEqual(vector_math.length_vector(v_1), 10.3923048)
def test_length_vector(self): v_1 = data.Vector(1, 2, 3) self.assertAlmostEqual(vector_math.length_vector(v_1), 3.74165738)
def test_length_vector_again(self): lv = vector_math.length_vector(data.Vector(3.4, 5.5, -7.2)) self.assertAlmostEqual(lv, 9.67729301)
def test_length_vector(self): lv = vector_math.length_vector(data.Vector(1, 2, 2)) self.assertAlmostEqual(lv, 3)
def test_length_vector2(self): vector2 = data.Vector(4, -5, 6) length_vector = 8.7749643873921226 self.assertAlmostEqual(vector_math.length_vector(vector2), length_vector)
def test_length_2(self): v = data.Vector(-6,-8,-10) length = vector_math.length_vector(v) self.assertAlmostEqual(length, math.sqrt(200)) pass
def test_length_vector1(self): vector1 = data.Vector(1, 2, 3 ) length_vector = 3.7416573867739413 self.assertAlmostEqual(vector_math.length_vector(vector1), length_vector)
def test_length_2(self): v = data.Vector(3.0, 0.0, 4.0) length = vector_math.length_vector(v) self.assertAlmostEqual(length, 5.0)
def test_normalize_vector_2(self): vec = data.Vector(1, 2, 2) newvec = vector_math.normalize_vector(vec) self.assertAlmostEqual(vector_math.length_vector(newvec), 1) self.assertEqual(newvec, data.Vector(1. / 3, 2. / 3, 2. / 3))
def test_normalize_vector_1(self): vec = data.Vector(9, 15456, 22) newvec = vector_math.normalize_vector(vec) self.assertAlmostEqual(vector_math.length_vector(newvec), 1)
def test_length_vector_2(self): vec = data.Vector(2, 3, 4) self.assertAlmostEqual(vector_math.length_vector(vec), math.sqrt(29))
def test_length_vector_1(self): vec = data.Vector(1, 3, 5) self.assertAlmostEqual(vector_math.length_vector(vec), math.sqrt(35))
def distance(point_1, point_2): return vector_math.length_vector( vector_math.vector_from_to(point_1, point_2))
def test_length_1(self): v = data.Vector(3,4,5) length = vector_math.length_vector(v) self.assertAlmostEqual(length, math.sqrt(50)) pass