public void Render(Platform p, Shape3d s)
    {
        switch ((p, s))
        {
        case var _ when p is OpenGL && s is Cylinder:
            Console.WriteLine($"OpenGL: rendering cylinder {s.SurfaceArea()}");
            return;

        case var _ when p is OpenGL && s is Sphere:
            Console.WriteLine($"OpenGL: rendering sphere {s.SurfaceArea()}");
            return;

        case var _ when p is SVG && s is Cylinder:
            Console.WriteLine($"SVG: rendering cylinder {s.SurfaceArea()}");
            return;

        case var _ when p is SVG && s is Sphere:
            Console.WriteLine($"SVG: rendering sphere {s.SurfaceArea()}");
            return;

        case var _ when s is CompositeShape:
            var compositeShape = s as CompositeShape;
            compositeShape.ForEach(shape => Render(p, shape));
            return;

        default:
            Console.WriteLine();
            return;
        }
    }
Example #2
0
        public static void Main(string[] Args)
        {
            // base class
            Shape3d basic = new Shape3d();

            // tori
            Torus torus1 = new Torus(10, 5, new Vector3(25, 2, -3));
            Torus torus2 = new Torus(5, 5);
            Torus torus3 = new Torus(5, 10);

            // dodecahedron
            Dodecahedron dodeceda = new Dodecahedron(15, new Vector3(420, 420, 420));

            // triangular prism
            Triangularprism prism1 = new Triangularprism(10, 9, 5, 25);
            Triangularprism prism2 = new Triangularprism(3, 3, 3, 25, new Vector3(1, 2, 3));

            // show casing them, does not give any errors
            ArrayList shapesList = new ArrayList();

            // shapesList.Add(basic);
            // shapesList.Add(torus1);
            // shapesList.Add(torus2);
            // shapesList.Add(torus3);
            // shapesList.Add(dodeceda);
            // shapesList.Add(prism1);
            // shapesList.Add(prism2);

            foreach (Shape3d shape in shapesList)
            {
                shape.draw();
                Console.WriteLine("");
            }

            // accessing the getter / setter of a class
            // Console.WriteLine("The lateral surface area of prism1 is {0}", prism1.lateralsurfacearea);

            /* --------- PROBLEMATIC SHAPES, UNCOMMENT AT OWN RISK --------- */
            // tori
            // Torus err_torus1 = new Torus(10, 0);
            // Torus err_torus2 = new Torus(0, 5);

            // dodecahedron
            // Dodecahedron err_dodeceda = new Dodecahedron(-5);

            // triangular prism
            // Triangularprism err_prism1 = new Triangularprism(10, 1, 1, 25);
            // Triangularprism err_prism2 = new Triangularprism(1, 10, 1, 25);
            // Triangularprism err_prism3 = new Triangularprism(1, 1, 10, 25);
        }