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
示例#3
0
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
示例#4
0
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
示例#5
0
 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)
示例#6
0
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)
示例#7
0
def distance(p1, p2):
    vector = vector_math.vector_from_to(p1, p2)
    return vector_math.length_vector(vector)
示例#8
0
 def test_length_vector_2(self):
     v_1 = data.Vector(6, 6, 6)
     self.assertAlmostEqual(vector_math.length_vector(v_1), 10.3923048)
示例#9
0
 def test_length_vector(self):
     v_1 = data.Vector(1, 2, 3)
     self.assertAlmostEqual(vector_math.length_vector(v_1), 3.74165738)
示例#10
0
 def test_length_vector_again(self):
     lv = vector_math.length_vector(data.Vector(3.4, 5.5, -7.2))
     self.assertAlmostEqual(lv, 9.67729301)
示例#11
0
 def test_length_vector(self):
     lv = vector_math.length_vector(data.Vector(1, 2, 2))
     self.assertAlmostEqual(lv, 3)
示例#12
0
 def test_length_vector2(self):
    vector2 = data.Vector(4, -5, 6)
    length_vector = 8.7749643873921226
    self.assertAlmostEqual(vector_math.length_vector(vector2), length_vector)
示例#13
0
 def test_length_2(self):
   v = data.Vector(-6,-8,-10)
   length = vector_math.length_vector(v)
   self.assertAlmostEqual(length, math.sqrt(200))
   pass
示例#14
0
 def test_length_vector1(self):
    vector1 = data.Vector(1, 2, 3 )
    length_vector = 3.7416573867739413
    self.assertAlmostEqual(vector_math.length_vector(vector1), length_vector)
示例#15
0
文件: tests.py 项目: jonluu1/CPE-101
 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)
示例#16
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))
示例#17
0
 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)
示例#18
0
 def test_length_vector_2(self):
     vec = data.Vector(2, 3, 4)
     self.assertAlmostEqual(vector_math.length_vector(vec), math.sqrt(29))
示例#19
0
 def test_length_vector_1(self):
     vec = data.Vector(1, 3, 5)
     self.assertAlmostEqual(vector_math.length_vector(vec), math.sqrt(35))
示例#20
0
def distance(point_1, point_2):
    return vector_math.length_vector(
        vector_math.vector_from_to(point_1, point_2))
示例#21
0
 def test_length_1(self):
   v = data.Vector(3,4,5)
   length = vector_math.length_vector(v)
   self.assertAlmostEqual(length, math.sqrt(50))
   pass