Пример #1
0
    def test_deserializeAmbientLight(self):
        ambientLightString = '{"active":"true", "brightness":"1.0"}'
        ambientLightJSON = json.loads(ambientLightString)

        jsonParser = JSONParser()
        light = jsonParser.deserializeAmbientLight(ambientLightJSON)
        self.assertEqual(1.0, light.brightness)
Пример #2
0
    def test_deserializeColor(self):
        colorString = '{"r": 1, "g": 0, "b": 0}'
        colorJSON = json.loads(colorString)

        color = JSONParser().deserializeColor(colorJSON)

        self.assertEqual(color.getR(), 1)
        self.assertEqual(color.getG(), 0)
        self.assertEqual(color.getB(), 0)
Пример #3
0
    def test_deserializeLight(self):
        lightString = '{"center":{"x":2, "y":1, "z":1}, "brightness":1.0}'
        lightJson = json.loads(lightString)

        jsonParser = JSONParser()
        light = jsonParser.deserializeLight(lightJson)
        self.assertEqual(2, light.position.x)
        self.assertEqual(1, light.position.y)
        self.assertEqual(1, light.position.z)
        self.assertEqual(1.0, light.brightness)
Пример #4
0
    def test_deserializeSphere(self):
        sphereString = '{"center":{"x":3.0,"y":1.0,"z":2.0},"radius":2.0,"color":{"r":1,"g":0,"b":0},"specular":1.0, "reflection":1.0, "transparency":0.0, "refractiveIndex":1.0}'
        sphereJson = json.loads(sphereString)

        jsonParser = JSONParser()
        sphere = jsonParser.deserializeSphere(sphereJson)
        self.assertEqual(3, sphere.center.x)
        self.assertEqual(1, sphere.center.y)
        self.assertEqual(2, sphere.center.z)
        self.assertEqual(2, sphere.radius)
        self.assertEqual(1.0, sphere.reflection)          #Not yet implemented properly on the JSONparser
Пример #5
0
    def test_deserializeRayTracingTask(self):
        jsonstring = '{"ImagePlane":{"width":500, "height":500}, "Antialiasing":{"active":"false"}, "Camera":{"position":{"x":0.0,"y":0.0,"z":0.0}, "pointOfView":{"x":0.0,"y":0.0,"z":1.0}, "cameraRightAngle":{"x":1.0,"y":0.0,"z":0.0}}, "Scene":{"Object3D":[{"Sphere":{"center":{"x":3.0,"y":1.0,"z":2.0},"radius":2.0,"color":{"r":1,"g":0,"b":0},"reflection":1.0, "specular":1.0, "transparency":1.0, "refractiveIndex":1.0}},{"Cylinder":{"center":{"x":3.0,"y":1.0,"z":2.0},"height": 1.0, "radius":2.0,"color":{"r":1,"g":0,"b":0},"reflection":1.0, "specular":1.0, "transparency":1.0, "refractiveIndex":1.0}}],"Light":[{"center":{"x":2, "y":1, "z":1}, "brightness":1.0}], "AmbientLight":{"active":"true", "brightness":"1.0"},"Floor":{"active":true},"Room":{"active":true}}}'
        j = json.loads(jsonstring)

        raytracer = JSONParser().deserializeRayTracingTask(j)

        # Check size of the ImagePlane
        self.assertEqual(raytracer.imageplane.getHeight(), 500)
        self.assertEqual(raytracer.imageplane.getWidth(), 500)
        # Check Light
        self.assertEqual(raytracer.scene.getLights()[0].position.x, 2)
        self.assertEqual(raytracer.scene.getLights()[0].position.y, 1)
        self.assertEqual(raytracer.scene.getLights()[0].position.z, 1)
        # Check first Object
        self.assertEqual(raytracer.scene.getObjects()[0].center.x, 3)
        self.assertEqual(raytracer.scene.getObjects()[0].center.y, 1)
        self.assertEqual(raytracer.scene.getObjects()[0].center.z, 2)
        self.assertEqual(raytracer.scene.getObjects()[0].radius, 2)
        # Check Ambient Light

        self.assertEqual(raytracer.scene.getLights()[1].brightness, 1.0)

        # Check another JSON

        jsonstring = '{"ImagePlane":{"width":500, "height":500}, "Antialiasing":{"active":"false"}, "Camera":{"position":{"x":0.0,"y":0.0,"z":0.0}, "pointOfView":{"x":0.0,"y":0.0,"z":1.0}, "cameraRightAngle":{"x":1.0,"y":0.0,"z":0.0}}, "Scene":{"Object3D":[{"Sphere":{"center":{"x":4.0,"y":1.0,"z":2.0},"radius":2.0,"color":{"r":1,"g":0,"b":0},"reflection":1.0, "specular":1.0, "transparency":1.0, "refractiveIndex":1.0}},{"Cylinder":{"center":{"x":3.0,"y":1.0,"z":2.0},"height": 1.0, "radius":2.0,"color":{"r":1,"g":0,"b":0},"reflection":1.0, "specular":1.0, "transparency":1.0, "refractiveIndex":1.0}}],"Light":[{"center":{"x":2, "y":1, "z":1}, "brightness":1.0}], "AmbientLight":{"active":"true", "brightness":"1.0"},"Floor":{"active":"true"},"Room":{"active":"false"}}}'

        j = json.loads(jsonstring)
        raytracer = JSONParser().deserializeRayTracingTask(j)

        # Check size of the ImagePlane
        self.assertEqual(raytracer.imageplane.getHeight(), 500)
        self.assertEqual(raytracer.imageplane.getWidth(), 500)
        # Check Light
        self.assertEqual(raytracer.scene.getLights()[0].position.x, 2)
        self.assertEqual(raytracer.scene.getLights()[0].position.y, 1)
        self.assertEqual(raytracer.scene.getLights()[0].position.z, 1)
        # Check first Object
        self.assertEqual(raytracer.scene.getObjects()[0].center.x, 4)
        self.assertEqual(raytracer.scene.getObjects()[0].center.y, 1)
        self.assertEqual(raytracer.scene.getObjects()[0].center.z, 2)
        self.assertEqual(raytracer.scene.getObjects()[0].radius, 2)
        # Check second Object (Cylinder)
        self.assertEqual(raytracer.scene.getObjects()[1].center.x, 3)
        self.assertEqual(raytracer.scene.getObjects()[1].center.y, 1)
        self.assertEqual(raytracer.scene.getObjects()[1].center.z, 2)
        self.assertEqual(raytracer.scene.getObjects()[1].radius, 2)
        self.assertEqual(raytracer.scene.getObjects()[1].height, 1)
        # Check Ambient Light
        self.assertRaises(Exception, raytracer.scene.getLights()[1])
        self.assertEqual(raytracer.scene.getLights()[1].brightness, 1)


        self.assertEqual(3, len(raytracer.scene.getObjects()))
Пример #6
0
def raytrace(request):
    response = HttpResponse(content_type="image/png")

    if (request.method == "POST"):
        body_unicode = request.body.decode('utf-8')
        body = json.loads(body_unicode)

        raytracer = JSONParser().deserializeRayTracingTask(body)

        img = raytracer.startRayTracing()

        plt.imsave(response, img)
    else:
        return HttpResponse("Method not Allowed", status=405)

    return response
Пример #7
0
    def test_deserializeCamera(self):
        jsonString = '{"Camera":{"position":{"x":"0","y":"0","z":"0"},"pointOfView":{"x":"0","y":"0","z":"1"},"cameraRightAngle":{"x":"1","y":"0","z":"0"}}}'
        j = json.loads(jsonString)

        camera = JSONParser().deserializeCamera(j)
        self.assertEqual(camera.position.x, 0)
        self.assertEqual(camera.position.y, 0)
        self.assertEqual(camera.position.z, 0)

        self.assertEqual(camera.pointOfView.x, 0)
        self.assertEqual(camera.pointOfView.y, 0)
        self.assertEqual(camera.pointOfView.z, 1)
Пример #8
0
    def test_deserializeCone(self):
        coneString = '{"center":{"x":3.0,"y":1.0,"z":2.0},"radius":1.0, "height":2.0, "color":{"r":1,"g":0,"b":0},"specular":1.0, "reflection":1.0, "transparency":0.0, "refractiveIndex":1.0}'

        coneJSON = json.loads(coneString)

        cone = JSONParser().deserializeCone(coneJSON)

        self.assertEqual(cone.center.x, 3)
        self.assertEqual(cone.center.y, 2)
        self.assertEqual(cone.center.z, 2)

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

        self.assertEqual(cone.specular, 1)
        self.assertEqual(cone.reflection, 1)
        self.assertEqual(cone.transparency, 0)
Пример #9
0
    def test_deserializeCube(self):
        cubeString = '{"center":{"x":3.0,"y":1.0,"z":2.0},"sideLength":1.0,"color":{"r":1,"g":0,"b":0},"specular":1.0, "reflection":1.0, "transparency":0.0, "refractiveIndex":1.0}'
        cubeJSON = json.loads(cubeString)

        cube = JSONParser().deserializeCube(cubeJSON)

        self.assertEqual(cube.center.x, 3)
        self.assertEqual(cube.center.y, 1)
        self.assertEqual(cube.center.z, 2)

        self.assertEqual(cube.w, 1)
        self.assertEqual(cube.h, 1)
        self.assertEqual(cube.d, 1)

        self.assertEqual(cube.specular, 1)
        self.assertEqual(cube.reflection, 1)
        self.assertEqual(cube.transparency, 0)
Пример #10
0
    def test_deserializeScene(self):
        jsonstring = '{"ImagePlane":{"width":500, "height":500}, "Antialiasing":{"active":"false"}, "Camera":{"position":{"x":0.0,"y":0.0,"z":0.0}, "pointOfView":{"x":0.0,"y":0.0,"z":1.0}, "cameraRightAngle":{"x":0.0,"y":0.0,"z":1.0}}, "Scene":{"Object3D":[{"Sphere":{"center":{"x":4.0,"y":1.0,"z":2.0},"radius":2.0,"color":{"r":1,"g":0,"b":0},"reflection":1.0, "specular":1.0, "transparency":1.0, "refractiveIndex":1.0}},{"Cylinder":{"center":{"x":3.0,"y":1.0,"z":2.0},"height": 1.0, "radius":2.0,"color":{"r":1,"g":0,"b":0},"reflection":1.0, "specular":1.0, "transparency":1.0, "refractiveIndex":1.0}}],"Light":[{"center":{"x":2, "y":1, "z":1}, "brightness":1.0}], "AmbientLight":{"active":"true", "brightness":"1.0"},"Floor":{"active":true},"Room":{"active":true}}}'
        j = json.loads(jsonstring)

        jsonParser = JSONParser()
        scene = jsonParser.deserializeScene(j)
Пример #11
0
    def test_deserializeFloor(self):
        floorString = '{"active":true}'
        floorJSON = json.loads(floorString)

        active = JSONParser().deserializeFloor(floorJSON)
        self.assertTrue(active)