Exemple #1
0
        public void TestSquareOfCircleSignedRadius()  // отрицательный радиус
        {
            ShapeCreator cc = new CircleCreator();
            Shape        actual;

            Assert.Throws <Exception>(() => actual = cc.Create(-5));
        }
Exemple #2
0
        public void TestSquareOfCircleDoubleRadius()  // дробный радиус
        {
            ShapeCreator cc       = new CircleCreator();
            var          circle   = cc.Create(5.5);
            double       actual   = circle.Square();
            double       expected = 95.033;

            Assert.AreEqual(actual, expected);
        }
Exemple #3
0
        public void TestSquareOfCircleIntRadius()   // целочисленный радиус
        {
            ShapeCreator cc       = new CircleCreator();
            var          circle   = cc.Create(5);
            double       actual   = circle.Square();
            double       expected = 78.54;

            Assert.AreEqual(actual, expected);
        }
Exemple #4
0
        public void Reset()
        {
            ShapeTypesInfoMap.Clear();

            RegisterShapeType(LineCreator.getInstance(), StandardLineRenderer.getInstance());
            RegisterShapeType(RectangleCreator.getInstance(), StandardRectangleRenderer.getInstance());
            RegisterShapeType(SquareCreator.getInstance(), StandardRectangleRenderer.getInstance());
            RegisterShapeType(EllipseCreator.getInstance(), StandardEllipseRenderer.getInstance());
            RegisterShapeType(CircleCreator.getInstance(), StandardEllipseRenderer.getInstance());
            RegisterShapeType(TriangleCreator.getInstance(), StandardTriangleRenderer.getInstance());
        }
Exemple #5
0
        static void Main(string[] args)
        {
            Creator creator = new CircleCreator();
            Shape   shape1  = creator.create_shape();

            creator = new SquareCreator();
            Shape shape2 = creator.create_shape();

            creator = new RectangleCreator();
            Shape shape3 = creator.create_shape();
        }
    private void OnWizardCreate()
    {
        string path = EditorUtility.SaveFilePanelInProject("Save Circle", $"Circle_{segments}_{radius}{(flip ? "_flip" : "")}", "asset", "Specify where to save the mesh.");

        if (path.Length > 0)
        {
            Mesh mesh = CircleCreator.Create(segments, radius, flip);
            MeshUtility.Optimize(mesh);
            AssetDatabase.CreateAsset(mesh, path);
            Selection.activeObject = mesh;
        }
    }
Exemple #7
0
        public void CreateCircleTest()
        {
            CircleCreator cc            = new CircleCreator(99, 99);
            Point         previousPoint = cc.PointsOnCircle.First();
            bool          isNeighbour   = true;

            cc.PointsOnCircle.Skip(1).ToList().ForEach(p =>
            {
                if (Math.Abs(previousPoint.X - p.X) > 1 && Math.Abs(previousPoint.Y - p.Y) > 1)
                {
                    isNeighbour = false;
                }
                previousPoint = p;
            });

            Assert.AreEqual(true, isNeighbour);
        }
Exemple #8
0
        static void Main(string[] args)
        {
            ShapeCreator cc      = new CircleCreator();
            var          circle1 = cc.Create(3); // аргумент - радиус
            var          circle2 = cc.Create(5);

            Console.WriteLine(circle1.Square() + " " + circle1.name);

            ShapeCreator tc        = new TriangleCreator();
            var          triangle1 = tc.Create(5, 4, 3); // аргументы - стороны

            Console.WriteLine(triangle1.Square() + " " + triangle1.name);
            if (Triangle.RightAngle((Triangle)triangle1))
            {
                Console.WriteLine("Right");
            }
        }
Exemple #9
0
        private void button4_Click(object sender, EventArgs e)
        {
            int             max = 80;
            CircleCreator   cc  = new CircleCreator(max, max);
            Circle          c   = new Circle(max, max, max / 2, cc.PointsOnCircle.ToArray());
            EmiterGenerator eg  = new EmiterGenerator(5, c);

            List <EmiterDetectorsSystem> systems = new List <EmiterDetectorsSystem>();

            eg.Emiters.ForEach(em =>
            {
                DetectorsGenerator dg = new DetectorsGenerator(20, 60, c, em);
                systems.Add(new EmiterDetectorsSystem(em, dg.Detectors));

                #region debug console
                //int[,] debugTab = new int[max + 1, max + 1];
                //for (int i = 0; i < max + 1; i++)
                //{
                //    for (int j = 0; j < max + 1; j++)
                //    {
                //        debugTab[i, j] = 0;
                //    }
                //}
                //debugTab[em.Point.X, em.Point.Y] = 3;
                //dg.Detectors.ForEach(d => debugTab[d.Point.X, d.Point.Y] = 1);

                //EmiterDetectorsSystem s = systems.Last();

                //s.Detectors.ForEach(de => s.GetLineForDetector(de).Points.ForEach(point => debugTab[point.X, point.Y] = 4));

                //for (int i = 0; i < max + 1; i++)
                //{
                //    for (int j = 0; j < max + 1; j++)
                //    {
                //        Console.Write(debugTab[i, j]);
                //    }
                //    Console.WriteLine();
                //}
                //Console.ReadLine();
                //Console.Clear();
                #endregion
            });

            BitmapToBlackAndWhiteConverter converter = new BitmapToBlackAndWhiteConverter(this.baseImage.Bitmap);
        }
Exemple #10
0
            public static Creator Get(CadFigure.Types createType, CadFigure fig)
            {
                CadFigure.Types type = createType;

                Creator creator = null;

                switch (type)
                {
                case Types.LINE:
                    creator = new LineCreator(fig);
                    break;

                case Types.RECT:
                    creator = new RectCreator(fig);
                    break;

                case Types.POLY_LINES:
                    creator = new PolyLinesCreator(fig);
                    break;

                case Types.CIRCLE:
                    creator = new CircleCreator(fig);
                    break;

                case Types.POINT:
                    creator = new PointCreator(fig);
                    break;

                case Types.DIMENTION_LINE:
                    creator = new DimLineCreator(fig);
                    break;

                default:
                    break;
                }

                return(creator);
            }
Exemple #11
0
        private void ComboBoxFigures_SelectedIndexChanged(object sender, EventArgs e)
        {
            var figureName = ComboBoxFigures.SelectedItem as string;


            switch (figureName)
            {
            case "Rectangle":
                FigureCreator = new RectangleCreator();
                break;

            case "Circle":
                FigureCreator = new CircleCreator();
                break;

            case "Triangle":
                FigureCreator = new TriangleCreator();
                break;

            default:
                break;
            }
        }
Exemple #12
0
        private void DoRandonTransform(BaseImage image, int n, double a, int l, bool useKeyPoints)
        {
            int maxX   = image.Bitmap.Width - 1;
            int maxY   = image.Bitmap.Height - 1;
            int radius = image.Bitmap.Width / 2 - 1;

            CircleCreator cc     = new CircleCreator(maxX, maxY);
            Circle        circle = new Circle(maxX, maxY, radius, cc.PointsOnCircle.ToArray());

            IEmiterGenerator eg = CreateEmiterGenerator(useKeyPoints, a, circle, maxX, maxY, radius);

            List <EmiterDetectorsSystem> systems = new List <EmiterDetectorsSystem>();

            BitmapToBlackAndWhiteConverter blackBitmap = new BitmapToBlackAndWhiteConverter(image.Bitmap);


            int suwak = Form1.trackbar * (eg.Emiters.Count / 10);

            if (Form1.trackbar != 10)
            {
                eg.Emiters.RemoveRange(suwak, (eg.Emiters.Count - suwak) - 1);
            }

            averageTable = new double[eg.Emiters.ToArray().Length, n + 1];
            double maxAverage = double.MinValue;
            double minAverage = double.MaxValue;

            int emiterIndex = 0;

            eg.Emiters.ForEach(e =>
            {
                IDetectorsGenerator dg          = CreateDetectorGenerator(useKeyPoints, n, l, circle, e, radius);
                EmiterDetectorsSystem newSystem = new EmiterDetectorsSystem(e, dg.Detectors);
                systems.Add(newSystem);

                int detectorIndex = 0;
                newSystem.Detectors.ForEach(detector =>
                {
                    LineCreator lc    = new LineCreator(e.Point, detector.Point);
                    LineSummer summer = new LineSummer(lc.Line, blackBitmap.ConvertedTab);
                    if (!Form1.checkBoxState)
                    {
                        lc.Line.ForEach(pointOnLine =>
                        {
                            OutPutImage.SumOfAverageTable[pointOnLine.X, pointOnLine.Y]   += summer.Average;
                            OutPutImage.CountOfAverageTable[pointOnLine.X, pointOnLine.Y] += 1;
                        });
                    }

                    averageTable[emiterIndex, detectorIndex++] = summer.Average;

                    if (summer.Average > maxAverage)
                    {
                        maxAverage = summer.Average;
                    }

                    if (summer.Average < minAverage)
                    {
                        minAverage = summer.Average;
                    }
                });
                emiterIndex++;
            });

            if (Form1.checkBoxState)
            {
                //OutPutImage zakomentowałem, żeby najpierw przefiltrować tablice avarageTable
                int aaa = eg.Emiters.ToArray().Length;
                int bbb = n + 1;
                sinogramFiltered = new double[aaa, bbb];
                for (int i = 0; i < aaa; i++)
                {
                    for (int j = 0; j < bbb; j++)
                    {
                        for (int k = 0; k < bbb; k++)
                        {
                            sinogramFiltered[i, j] += fx(j, k) * averageTable[i, k];
                        }
                    }
                }

                //dalej to dla tych samych emiterów, dodaje przefiltrowaną wartość
                emiterIndex = 0;
                eg.Emiters.ForEach(e =>
                {
                    IDetectorsGenerator dg          = CreateDetectorGenerator(useKeyPoints, n, l, circle, e, radius);
                    EmiterDetectorsSystem newSystem = new EmiterDetectorsSystem(e, dg.Detectors);
                    //systems.Add(newSystem);

                    int detectorIndex = 0;
                    newSystem.Detectors.ForEach(detector =>
                    {
                        LineCreator lc    = new LineCreator(e.Point, detector.Point);
                        LineSummer summer = new LineSummer(lc.Line, blackBitmap.ConvertedTab);

                        lc.Line.ForEach(pointOnLine =>
                        {
                            OutPutImage.SumOfAverageTable[pointOnLine.X, pointOnLine.Y]   += sinogramFiltered[emiterIndex, detectorIndex];
                            OutPutImage.CountOfAverageTable[pointOnLine.X, pointOnLine.Y] += 1;
                        });
                        detectorIndex++;
                    });
                    emiterIndex++;
                });
            }

            NormalizeTab(eg.Emiters.ToArray().Length, n + 1, maxAverage, averageTable, minAverage);
            GenerateBitmap(eg.Emiters.ToArray().Length, n + 1, averageTable);

            Console.Write("DoRandonTransform --> DONE\n");
        }
Exemple #13
0
        public void GeneratePointInForthQuarterOfCircleTest1()
        {
            CircleCreator cc = new CircleCreator(9, 9);

            Assert.AreEqual(new Point(1, 8), cc.GeneratePointInForthQuarterOfCircle(new Point(1, 1)));
        }
Exemple #14
0
        public void GeneratePointInSecoundQuarterOfCircleTest()
        {
            CircleCreator cc = new CircleCreator(9, 9);

            Assert.AreEqual(new Point(8, 1), cc.GeneratePointInSecoundQuarterOfCircle(new Point(1, 1)));
        }