/**
           * Create and initialize the scene for the rendering picture.
           * @return The scene just created
           */
        Scene createScene()
        {
            int x = 0;
            int y = 0;

            Scene scene = new Scene();

            /* create spheres */

            Primitive p;
            int nx = 4;
            int ny = 4;
            int nz = 4;
            for (int i = 0; i < nx; i++)
            {
                for (int j = 0; j < ny; j++)
                {
                    for (int k = 0; k < nz; k++)
                    {
                        double xx = 20.0 / (nx - 1) * i - 10.0;
                        double yy = 20.0 / (ny - 1) * j - 10.0;
                        double zz = 20.0 / (nz - 1) * k - 10.0;

                        p = new Sphere(new Vec(xx, yy, zz), 3);
                        //p.setColor(i/(double) (nx-1), j/(double)(ny-1), k/(double) (nz-1));
                        p.setColor(0, 0, (i + j) / (double)(nx + ny - 2));
                        p.surf.shine = 15.0;
                        p.surf.ks = 1.5 - 1.0;
                        p.surf.kt = 1.5 - 1.0;
                        scene.addObject(p);
                    }
                }
            }

            /* Creates five lights for the scene */
            scene.addLight(new Light(100, 100, -50, 1.0));
            scene.addLight(new Light(-100, 100, -50, 1.0));
            scene.addLight(new Light(100, -100, -50, 1.0));
            scene.addLight(new Light(-100, -100, -50, 1.0));
            scene.addLight(new Light(200, 200, 0, 1.0));

            /* Creates a View (viewing point) for the rendering scene */
            View v = new View(new Vec(x, 20, -30),
                                new Vec(x, y, 0),
                                new Vec(0, 1, 0),
                                1.0,
                    35.0 * 3.14159265 / 180.0,
                                1.0);
            /*
            v.from = new Vec(x, y, -30);
            v.at = new Vec(x, y, -15);
            v.up = new Vec(0, 1, 0);
            v.angle = 35.0 * 3.14159265 / 180.0;
            v.aspect = 1.0;
            v.dist = 1.0;

            */
            scene.setView(v);

            return scene;
        }
        public void setScene(Scene scene)
        {
            // Get the objects count
            int nLights = scene.getLights();
            int nObjects = scene.getObjects();

            lights = new Light[nLights];
            prim = new Primitive[nObjects];

            // Get the lights
            for (int l = 0; l < nLights; l++)
            {
                lights[l] = scene.getLight(l);
            }

            // Get the primitives
            for (int o = 0; o < nObjects; o++)
            {
                prim[o] = scene.getObject(o);
            }

            // Set the view
            view = scene.getView();
        }