Пример #1
0
        /// <summary>
        /// Application main method.
        /// </summary>
        /// <param name="args">Command line arguments</param>
        static void Main(string[] args)
        {
            CommandLineArguments cArgs = new CommandLineArguments(args);

            Configuration config = new Configuration();

            var something = new Driven.Metrics.DrivenMetrics.Factory().Create(
                 cArgs.Assemblies.ToArray(),
                 config.Container.ResolveAll<IMetricCalculator>() ,
                     "TestReport",
                 config.Container.Resolve<IReport>());

            something.RunAllMetricsAndGenerateReport();

            CodeStadt.Core.DrivenMetrics.Reporting.ResultOutput results = something.Report.As<Core.DrivenMetrics.Reporting.ResultOutput>();

            if (results != null)
            {
                results.Results.ForEach(x =>
                {
                    Console.WriteLine("Metric: {0}".Formatted(x.Name));
                    Console.WriteLine("");

                    x.ClassResults.ForEach(y =>
                    {
                        Console.WriteLine("  Class: {0}".Formatted(y.Name));
                        Console.WriteLine("");
                        y.MethodResults.ForEach(z =>
                        {
                            Console.WriteLine("    Method: {0} \n\r    Result: {1}".Formatted(z.Name, z.Result));
                            Console.WriteLine("");

                        });
                    });
                });
            }

            // Console.ReadLine();

            Console.WriteLine("Going to try and draw an image :-)");

            // Lets ray trace something
            string raytraceFileName = "raytrace.jpg";
            if (File.Exists(raytraceFileName)) File.Delete(raytraceFileName);

            int width = 600;
            int height = 600;
            var bitmap = new System.Drawing.Bitmap(width, height);

            RayTracer rayTracer = new RayTracer((int x, int y, System.Drawing.Color color) =>
            {
                bitmap.SetPixel(x, y, color);
            });

            var screen = new Screen(width, height);
            var MyScene = new Scene()
            {
                Elements = new List<SceneObject>() {
                                new Plane()
                                {
                                    Norm = new Vector(0, 1, 0),
                                    Point = new Vector(0, -0.5, 0),
                                    Surface = Surfaces.CheckerBoard
                                }
                                //,new Polygon(new List<Vector>(){ new Vector(0,0,0), new Vector(0,1,0), new Vector(1,1,0), new Vector(1,0,0)}, new Vector(0,0,1))
                                //{
                                //    Surface = Surfaces.White
                                //}
                                //,new Polygon(new List<Vector>(){ new Vector(0,0,0), new Vector(0,1,0), new Vector(0,1,1), new Vector(0,0,1)}, new Vector(1,0,0))
                                //{
                                //    Surface = Surfaces.White
                                //}
                                //,new Polygon(new List<Vector>(){ new Vector(0,0,0), new Vector(0,0,1), new Vector(1,0,1), new Vector(1,0,0)}, new Vector(0,1,0))
                                //{
                                //    Surface = Surfaces.White
                                //}
                                //,new Sphere() {
                                //    Center = new Vector(0,1,0),
                                //    Radius = 1,
                                //    Surface = Surfaces.Shiny
                                //},
                                //new Sphere() {
                                //    Center = new Vector(-1,.5,1.5),
                                //    Radius = .5,
                                //    Surface = Surfaces.Shiny
                                //}

                                // FOR TESTING
                                //,new Line(){
                                //    Point = new Vector(0,0,0),
                                //    Direction = new Vector(1,0,0),
                                //    Surface = Surfaces.Green
                                //}
                                //,new Line(){
                                //    Point = new Vector(0,0,0),
                                //    Direction = new Vector(0,1,0),
                                //    Surface = Surfaces.Green
                                //}
                                //,new Line(){
                                //    Point = new Vector(0,0,0),
                                //    Direction = new Vector(0,0,1),
                                //    Surface = Surfaces.Green
                                //}
                                //,new Line(){
                                //    Point = new Vector(1,0,0),
                                //    Direction = new Vector(0,0,1),
                                //    Surface = Surfaces.Green
                                //}

                },
                Lights = new List<Light>() {
                                //new Light() {
                                //    Position = new Vector(-2,2.5,0),
                                //    Color = new Color(.49,.07,.07)
                                //},
                                //new Light() {
                                //    Position = new Vector(1.5,2.5,1.5),
                                //    Color = new Color(.07,.07,.49)
                                //},
                                //new Light() {
                                //    Position = new Vector(1.5,2.5,-1.5),
                                //    Color = new Color(.07,.49,.071)
                                //},
                                //new Light() {
                                //    Position = new Vector(8,5,-6),
                                //    Color = new Color(1,0,0)
                                //},
                                new Light() {
                                    Position = new Vector(8,4,8),
                                    Color = new Color(1,1,1)
                                }},
                Camera = new Camera(new Vector(6, 3, 6), new Vector(0, 0, 0), screen)
                //Camera = new Camera(new Vector(-3, 2, -4), new Vector(-1,0.5,0))
            };

            MyScene.AddModel(new Cube(1, new Vector(0, 0, 0)));

            rayTracer.Render(MyScene);

            bitmap.Save(raytraceFileName);
        }
Пример #2
0
        /// <summary>
        /// Application main method.
        /// </summary>
        /// <param name="args">Command line arguments</param>
        static void Main(string[] args)
        {
            CommandLineArguments cArgs = new CommandLineArguments(args);

            Configuration config = new Configuration();

            var something = new Driven.Metrics.DrivenMetrics.Factory().Create(
                 cArgs.Assemblies.ToArray(),
                 config.Container.ResolveAll<IMetricCalculator>() ,
                     "TestReport",
                 config.Container.Resolve<IReport>());

            something.RunAllMetricsAndGenerateReport();

            CodeStadt.Core.DrivenMetrics.Reporting.ResultOutput results = something.Report.As<Core.DrivenMetrics.Reporting.ResultOutput>();

            if (results != null)
            {
                results.Results.ForEach(x =>
                {
                    Console.WriteLine("Metric: {0}".Formatted(x.Name));
                    Console.WriteLine("");

                    x.ClassResults.ForEach(y =>
                    {
                        Console.WriteLine("  Class: {0}".Formatted(y.Name));
                        Console.WriteLine("");
                        y.MethodResults.ForEach(z =>
                        {
                            Console.WriteLine("    Method: {0} \n\r    Result: {1}".Formatted(z.Name, z.Result));
                            Console.WriteLine("");

                        });
                    });
                });
            }

              // Console.ReadLine();

            Console.WriteLine("Going to try and draw an image :-)");

            int screenZ = 49;

            string simpleFileName = "simple.jpg";
            if (File.Exists(simpleFileName)) File.Delete(simpleFileName);

            Bitmap simpleMap = new Bitmap(1000, 1000);

            Graphics simpleImage = Graphics.FromImage(simpleMap);

            //front square
            Coordinate3D coord1 = new Coordinate3D(430, 430, 1);
            Coordinate3D coord2 = new Coordinate3D(480, 430, 1);
            Coordinate3D coord3 = new Coordinate3D(480, 480, 1);
            Coordinate3D coord4 = new Coordinate3D(430, 480, 1);

            //rear square
            Coordinate3D coord11 = new Coordinate3D(450, 450, 2);
            Coordinate3D coord21 = new Coordinate3D(520, 450, 2);
            Coordinate3D coord31 = new Coordinate3D(520, 520, 2);
            Coordinate3D coord41 = new Coordinate3D(450, 520, 2);

            //draw front square
            SimpleDrawer.DrawLine(simpleImage, coord1, coord2, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord2, coord3, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord3, coord4, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord4, coord1, screenZ);

            //draw rear square

            SimpleDrawer.DrawLine(simpleImage, coord11, coord21, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord21, coord31, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord31, coord41, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord41, coord11, screenZ);

            //link front to rear

            SimpleDrawer.DrawLine(simpleImage, coord1, coord11, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord2, coord21, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord3, coord31, screenZ);
            SimpleDrawer.DrawLine(simpleImage, coord4, coord41, screenZ);

            simpleMap.Save(simpleFileName, ImageFormat.Jpeg);

            //view point stuff
            //note that the blue square is the back face of the cube

            //some change

            string advancedFileName = "advanced.jpg";
            if (File.Exists(advancedFileName)) File.Delete(advancedFileName);

            Bitmap advancedMap = new Bitmap(1000, 1000);

            Graphics advancedImage = Graphics.FromImage(advancedMap);

            Coordinate3D viewPoint = new Coordinate3D(0,0, 30);

            AdvancedDrawer drawer = new AdvancedDrawer(screenZ, viewPoint, advancedImage);

            advancedImage.FillPolygon(Brushes.Black, new Point[]{
                new Point(0,1000),
                new Point(1000,1000),
                new Point(1000,0),
                new Point(0,0),
            });

            Coordinate3D middleX = new Coordinate3D(500, 0, screenZ);
            Coordinate3D middleY = new Coordinate3D(0, 500, screenZ);

            drawer.DrawLine(new Coordinate3D(-500, 0, screenZ), new Coordinate3D(500, 0, screenZ));
            drawer.DrawLine(new Coordinate3D(0,-500, screenZ), new Coordinate3D(0, 500, screenZ));

            //draw rear square

            //AdvancedDrawer.DrawLine(advancedImage, coord11, coord21, viewPoint, screenZ);
            //AdvancedDrawer.DrawLine(advancedImage, coord21, coord31, viewPoint, screenZ);
            //AdvancedDrawer.DrawLine(advancedImage, coord31, coord41, viewPoint, screenZ);
            //AdvancedDrawer.DrawLine(advancedImage, coord41, coord11, viewPoint, screenZ);

            //ICityBuilder builder = new RandomCubeBuilder(50, 600, 40, 600, 40, 600, 1, 1);

            //            IEnumerable<IShape> shapes = builder.CreateCity(null);

            Cube cb = new Cube(new Coordinate3D(0, 0, 50), 50, 50, 50);
            IEnumerable<IShape> shapes = new IShape[] { cb };

            shapes.ForEach(y => y.Faces.ForEach(x =>
            {
                drawer.DrawFilledPolygon(x.Brush, x.ToArray());
            }));

            advancedMap.Save(advancedFileName);
        }