Exemple #1
0
 public World(PointLight light, Shape[] sceneObjects, int reflectionDepth = 5)
 {
     SceneObjects    = sceneObjects;
     SceneLight      = light;
     ReflectionDepth = reflectionDepth;
 }
Exemple #2
0
        static void Main(string[] args)
        {
            Shape p = new Plane();

            p.Material.Colour     = new Tuple(1.0f, 0f, 0.0f);
            p.Material.Diffuse    = 0.7f;
            p.Material.Specular   = 0.3f;
            p.Material.Pattern    = new RingPattern(new Tuple(0.1f, 0.9f, 0.2f, 0), new Tuple(0.1f, 0, 0.8f, 0));
            p.Material.Reflective = 0.5f;
            //  p.Material.Pattern.Transform = new ScaleMatrix(10,10,10);


            Shape p2 = new Plane();

            p2.Transform         = new RotationMatrix_X(MathF.PI / 2) * new TranslationMatrix(0f, 0, 1000f);
            p2.Material.Colour   = new Tuple(0.0f, .2f, .8f);
            p2.Material.Diffuse  = 0.7f;
            p2.Material.Specular = 0.3f;



            Sphere middle = new Sphere();

            middle.Transform                  = new TranslationMatrix(-0.5f, 1, 0.5f);
            middle.Material.Colour            = new Tuple(0.1f, 1f, 0.5f);
            middle.Material.Diffuse           = 0.7f;
            middle.Material.Specular          = 0.3f;
            middle.Material.Reflective        = 0.9f;
            middle.Material.Refractive_index  = 1.333f;
            middle.Material.Transparency      = 0.5f;
            middle.Material.Pattern           = new RingPattern(new Tuple(1, 1, 1, 0), new Tuple(0, 0, 0, 0));
            middle.Material.Pattern.Transform = new ScaleMatrix(0.25f, 0.25f, 0.25f) * new RotationMatrix_X(90);


            Cube right = new Cube();

            right.Transform                 = new TranslationMatrix(1.5f, 0.5f, -0.5f) * new ScaleMatrix(0.5f, 0.5f, 0.5f);
            right.Material.Colour           = new Tuple(0.2f, 0f, 0f);
            right.Material.Diffuse          = 0.7f;
            right.Material.Specular         = 0.1f;
            right.Material.Transparency     = 0.85f;
            right.Material.Reflective       = 0.2f;
            right.Material.Refractive_index = 1.333f;


            Sphere left = new Sphere();

            left.Transform                  = new TranslationMatrix(-1.5f, 0.33f, -0.75f) * new ScaleMatrix(0.33f, 0.33f, 0.33f);
            left.Material.Colour            = new Tuple(1f, 0.8f, 0.1f);
            left.Material.Diffuse           = 0.7f;
            left.Material.Specular          = 0.3f;
            left.Material.Pattern           = new StripedPattern(new Tuple(1, 1, 0.9f, 0), new Tuple(0.5f, 0.3f, 0.4f, 0));
            left.Material.Pattern.Transform = new ScaleMatrix(0.5f, 0.5f, 0.5f) * new RotationMatrix_Z(45);


            Shape[]    WorldObjects = { p, left, middle, right };
            PointLight light        = new PointLight(new Tuple(-10, 10, -10, 1), new Tuple(1, 1, 1, 0));
            World      world        = new World(light, WorldObjects);
            Camera     camera       = new Camera(800, 600, MathF.PI / 3);

            camera.Transform = new ViewMatrix(new Tuple(0, 1.5f, -5, 1), new Tuple(0, 1, 0, 1), new Tuple(0, 1, 0, 0));

            Canvas image = camera.Render(world);

            image.saveCanvasToPPM("SixSceneFHD.ppm");
            Console.WriteLine("done");
            Tests.RunTests();
        }
Exemple #3
0
 public World(PointLight light, int reflectionDepth = 5)
 {
     SceneLight      = light;
     ReflectionDepth = reflectionDepth;
 }