示例#1
0
    def test_intersection5(self):
        cone = Cone(Vector(0, 2.5, 5), 3, 1, Color(1, 0, 0))
        ray = Ray(Vector(0, 0, 0), Vector(0.05, 0.2, 1))
        intersection = cone.intersection(ray, 0.00001, 1000)

        self.assertAlmostEqual(intersection.point.x, 0.25, 3)
        self.assertAlmostEqual(intersection.point.y, 1.0, 3)
        self.assertAlmostEqual(intersection.point.z, 5, 3)
示例#2
0
    def test_intersection4(self):
        cone = Cone(Vector(0, 0, 5), 3, 1, Color(1, 0, 0))
        ray = Ray(Vector(0, 0, 0), Vector(0.05, -0.3, 1))
        intersection = cone.intersection(ray, 0.00001, 1000)

        self.assertAlmostEqual(intersection.point.x, 0.205613676)
        self.assertAlmostEqual(intersection.point.y, -1.233682056)
        self.assertAlmostEqual(intersection.point.z, 4.11227352)
示例#3
0
    def test_intersection2(self):
        cone = Cone(Vector(0, 0, 5), 3, 1, Color(1, 0, 0))
        ray = Ray(Vector(0, 0, 0), Vector(0.0, 0.05, 1))
        intersection = cone.intersection(ray, 0.00001, 1000)

        self.assertAlmostEqual(intersection.point.x, 0.0)
        self.assertAlmostEqual(intersection.point.y, 0.2288135593)
        self.assertAlmostEqual(intersection.point.z, 4.5762711864)
示例#4
0
    def deserializeCone(self, coneJson):
        center = self.deserializeVector(coneJson["center"])
        reflection = float(coneJson["reflection"])
        radius = float(coneJson["radius"])
        height = float(coneJson["height"])
        specular = float(coneJson["specular"])
        transparency = float(coneJson["transparency"])
        refractiveIndex = float(coneJson["refractiveIndex"])
        color = self.deserializeColor(coneJson["color"])

        return Cone(center, height, radius, color, specular, reflection,
                    transparency, refractiveIndex)
示例#5
0
    def test_constructor(self):
        cone = Cone(Vector(0, 0, 5), 3, 1, Color(1, 0, 0))
        self.assertEqual(cone.bottom.x, 0)
        self.assertEqual(cone.bottom.y, -1.5)
        self.assertEqual(cone.bottom.z, 5)

        self.assertEqual(cone.top.x, 0)
        self.assertEqual(cone.top.y, 4.5)
        self.assertEqual(cone.top.z, 5)

        self.assertEqual(cone.radius, 1)
        self.assertEqual(cone.height, 3)

        self.assertAlmostEqual(cone.alpha, 18.43494882)
示例#6
0
    p1 = Plane(Vector(0, -3, 0), Vector(0, 1, 0), Color(1, 0, 0), 0, 0)
    p2 = Plane(Vector(0, 10, 0), Vector(0, -1, 0), Color(0.1, 1.0, 1.0), 0, 0)

    p3 = Plane(Vector(0, 0, 30), Vector(0, 0, -1), Color(0.7, 0.1, 0.2), 0, 0)
    p4 = Plane(Vector(0, 0, -1), Vector(0, 0, 1), Color(0.1, 0.4, 0.8), 0, 0)

    p5 = Plane(Vector(-10, 0, 0), Vector(1, 0, 0), Color(0.2, 0.1, 0.6), 0, 0)
    p6 = Plane(Vector(10, 0, 0), Vector(-1, 0, 0), Color(0.1, 0.7, 0.2), 0, 0)

    s1 = Sphere(sCenter1, 1, Color(1.0, 0, 0), 600, 0, 0)
    s2 = Sphere(sCenter2, 1.3, Color(0, 1.0, 0), 500, 0, 0)

    cube = Cube(Vector(0, 0, 25), 10, Color(0, 1, 0), 1000, 0, 0)

    cone = Cone(Vector(0, 0, 10), 1, 1, Color(1, 0, 0), 1000, 0, 0)
    cylinder = Cylinder(Vector(0, -3, 8), 1, 1, Color(1, 0, 0), 1000, 0.8, 0)

    light1 = Light(0, 3, 8, 0.5)
    light2 = Light(1, 3, 5, 0.3)

    light0 = AmbientLight(0.2)

    scene = Scene()

    scene.addLight(light0)
    scene.addLight(light1)
    scene.addLight(light2)

    scene.addObject3D(s1)
    scene.addObject3D(cylinder)
示例#7
0
    def test_intersection3(self):
        cone = Cone(Vector(0, 0, 5), 3, 1, Color(1, 0, 0))
        ray = Ray(Vector(0, 0, 0), Vector(0.0, 1.0, 1))
        intersection = cone.intersection(ray, 0.00001, 1000)

        self.assertIsNone(intersection)