private void createRandomSetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //产生随机点集:
            RandomPositionSet_InFixedDistribution randomPositionSet_InFixedDistribution = new RandomPositionSet_InFixedDistribution();

            randomPositionSet_InFixedDistribution.PointNum          = 100000;
            randomPositionSet_InFixedDistribution.DistributionStyle = distributionStyle.Uniform;
            new ConfiguratedByForm(randomPositionSet_InFixedDistribution);
            randomPositionSet_InFixedDistribution.Produce();

            positionSetContainer.AddPositionSet(randomPositionSet_InFixedDistribution);
        }
        public static IPositionSet getRandomPositionSet_InFixedDistribution(int width, int height, int totalAmount)
        {
            //产生随机点集:
            RandomPositionSet_InFixedDistribution set = new RandomPositionSet_InFixedDistribution();

            set.DistributionStyle = distributionStyle.Uniform;
            set.MinBound          = 0;
            set.MaxBound          = width > height ? width : height;
            set.PointNum          = totalAmount;
            new ConfiguratedByForm(set);
            set.Produce();
            return(set);
        }
예제 #3
0
        private void button2_Click(object sender, EventArgs e)
        {
            //产生随机点集:
            RandomPositionSet_InFixedDistribution randomPositionSet_InFixedDistribution = new RandomPositionSet_InFixedDistribution();

            randomPositionSet_InFixedDistribution.PointNum          = 10000;
            randomPositionSet_InFixedDistribution.DistributionStyle = distributionStyle.ClusterGaussianDistribution;
            new ConfiguratedByForm(randomPositionSet_InFixedDistribution);
            randomPositionSet_InFixedDistribution.Produce();
            IPositionSetEdit set = randomPositionSet_InFixedDistribution;

            runDemo(set);
        }
예제 #4
0
        //生成随机点集
        List <IPosition> createPointSet(double pointCount)
        {
            RandomPositionSet_InFixedDistribution positionSet = new RandomPositionSet_InFixedDistribution((int)pointCount, dStyle);

            List <IPosition> posList = new List <IPosition>();

            positionSet.InitToTraverseSet();
            while (positionSet.NextPosition())
            {
                KD2DPoint point = new KD2DPoint(positionSet.GetPosition());
                posList.Add(point);
            }

            return(posList);
        }
예제 #5
0
        private void TestBotton_Click(object sender, EventArgs e)
        {
            LayersExOptDlg layers = new LayersExOptDlg();
            RandomPositionSet_InFixedDistribution randomPositionSet1 = new RandomPositionSet_InFixedDistribution
                                                                           (10000, distributionStyle.GaussianDistribution);

            new ConfiguratedByForm(randomPositionSet1);
            randomPositionSet1.Produce();

            layers.Add(new Layer_PositionSet_Point(randomPositionSet1));

            LayersEditerForm positionSetEditerForm = new LayersEditerForm(layers);

            positionSetEditerForm.Show();
        }
예제 #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            PainterDialog painterDialog = new PainterDialog();

            distributionStyle dStyle = distributionStyle.Uniform;
            int pointNum             = 10000;

            RandomPositionSet_InFixedDistribution randomPositionSet = new RandomPositionSet_InFixedDistribution(pointNum, dStyle);

            //new ConfiguratedByForm(randomPositionSet);
            randomPositionSet.ConfiguratedByGUI();
            randomPositionSet.Produce();

            painterDialog.Clear();
            painterDialog.DrawPositionSet(randomPositionSet);
        }
예제 #7
0
        private void TestForViewer(object sender, EventArgs e)
        {
            painterDialog.Show();

            painterDialog.Reset();
            painterDialog.HoldOnMode();

            RandomPositionSet_InFixedDistribution randomPositionSet1 = new RandomPositionSet_InFixedDistribution
                                                                           (10000, distributionStyle.GaussianDistribution);

            new ConfiguratedByForm(randomPositionSet1);
            randomPositionSet1.Produce();

            RandomPositionSet_InFixedDistribution randomPositionSet2 = new RandomPositionSet_InFixedDistribution
                                                                           (10000, distributionStyle.LaplaceDistribution);

            new ConfiguratedByForm(randomPositionSet2);
            randomPositionSet2.Produce();

            M2MSCreater_ForGeneralM2MStruture m2m_Creater_ForGeneralM2MStruture = new M2MSCreater_ForGeneralM2MStruture();
            IM2MStructure m2mStructure = m2m_Creater_ForGeneralM2MStruture.CreateAutomatically(randomPositionSet2);

            m2mStructure.Preprocessing(randomPositionSet2);

            painterDialog.Clear();
            painterDialog.DrawPositionSet(randomPositionSet1);
            painterDialog.DrawPositionSet(randomPositionSet2);
            painterDialog.DrawM2MLevel(m2mStructure.GetLevel(m2mStructure.GetLevelNum() - 1));
            painterDialog.DrawM2MStructure(m2mStructure);
            Layer_PositionSet layer = new Layer_PositionSet_Point(GetRamSet2());

            layer.SetPositionSetTransformByM2MLevel(m2mStructure.GetLevel(m2mStructure.GetLevelNum() - 1));
            //painterDialog.Painter.Layers.Add(layer);
            painterDialog.Show();

            painterDialog.Clear();
            painterDialog.DrawPath(GetRamSet(1000, 800));
            painterDialog.DrawPositionSet(GetRamSet(500, 400));
            painterDialog.DrawConvexHull(GetRamSet2());
            painterDialog.DrawSquareFrame(GetRamSet(500, 400));
            painterDialog.Show();

            painterDialog.Reset();
        }
예제 #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            PainterDialog painterDialog = new PainterDialog();

            RandomPositionSet_InFixedDistribution randomPositionSet = new RandomPositionSet_InFixedDistribution();

            new ConfiguratedByForm(randomPositionSet);
            randomPositionSet.Produce();

            QuickHull    quickHull  = new QuickHull();
            IPositionSet convexHull = quickHull.ConvexHull(randomPositionSet);

            painterDialog.Clear();
            painterDialog.DrawConvexHull(convexHull);

            IPosition        p  = PositionSetAttribute.GetGravityCenter(convexHull);
            List <IPosition> pl = new List <IPosition>();

            pl.Add(p);
            painterDialog.DrawPath(new PositionSet_ImplementByIEnumerableTemplate(pl));
        }
예제 #9
0
        List <IPosition> createPointSetWithPrepare(double pointCount)
        {
            RandomPositionSet_InFixedDistribution positionSet = new RandomPositionSet_InFixedDistribution((int)pointCount, dStyle);

            List <IPosition> posList = new List <IPosition>();

            minX = float.MaxValue;
            minY = float.MaxValue;
            maxX = float.MinValue;
            maxY = float.MinValue;

            positionSet.InitToTraverseSet();
            while (positionSet.NextPosition())
            {
                KD2DPoint point = new KD2DPoint(positionSet.GetPosition());
                posList.Add(point);

                if (minX > point.GetX())
                {
                    minX = point.GetX();
                }
                else if (maxX < point.GetX())
                {
                    maxX = point.GetX();
                }

                if (minY > point.GetY())
                {
                    minY = point.GetY();
                }
                else if (maxY < point.GetY())
                {
                    maxY = point.GetY();
                }
            }

            runM2MNNPP(0, posList);
            runKDTNNPP(0, posList);
            return(posList);
        }
        private void TestForAlgorithmDemo(object sender, EventArgs e)
        {
            //以下代码必须在UI线程中调用,即不能在另开的线程中调用
            LayersExOptDlg       layers               = new LayersExOptDlg();
            LayersPainterForm    layersPainterForm    = new LayersPainterForm(layers);
            LayersPaintedControl layersPaintedControl = layersPainterForm.LayersPaintedControl;
            LayersEditedControl  layersEditedControl  = new LayersEditedControl();

            layersEditedControl.Dock = DockStyle.Top;
            layersEditedControl.LayersPaintedControl = layersPaintedControl;
            layersPainterForm.Controls.Add(layersEditedControl);
            FlowControlerForm flowControlerForm = new FlowControlerForm();

            layersPainterForm.Show();
            flowControlerForm.Show(layersPainterForm);

            //新建或外部传入待演示对象
            M2M_NN m2m_NN = new M2M_NN();
            M2M_CH m2m_CH = new M2M_CH();

            //打开一个Worker线程来进行算法流程的演示(否则会阻塞UI线程以至于演示不能进行)
            IAsyncResult result = new dDemoProcess(delegate
            {
                //产生随机点集:
                RandomPositionSet_InFixedDistribution randomPositionSet_InFixedDistribution = new RandomPositionSet_InFixedDistribution();
                randomPositionSet_InFixedDistribution.PointNum          = 100000;
                randomPositionSet_InFixedDistribution.DistributionStyle = distributionStyle.ClusterGaussianDistribution;
                new ConfiguratedByForm(randomPositionSet_InFixedDistribution);
                randomPositionSet_InFixedDistribution.Produce();

                //编辑点集
                Layer_PositionSet_Point layer = new Layer_PositionSet_Point(randomPositionSet_InFixedDistribution);
                layer.EditAble                = true;
                layer.Point.PointColor        = Color.Yellow;
                layer.Point.PointRadius       = 2;
                layer.Point.IsDrawPointBorder = true;
                layers.Add(layer);
                layersPainterForm.Invalidate();
                flowControlerForm.SuspendAndRecordWorkerThread();
                layers.Remove(layer);

                ///////////////////////////////////////
                //GetRandomPositionFromPositionSetRectangle getRandomPositionFromPositionSetRectangle
                //= new GetRandomPositionFromPositionSetRectangle(randomPositionSet_InFixedDistribution);

                ////对m2m_NN算法进行演示:
                ////为对象的事件添加事件响应,以进行算法演示
                //AlgorithmDemo_M2M_NN algorithmDemo_M2M_NN = new AlgorithmDemo_M2M_NN(m2m_NN, layers, flowControlerForm, layersPaintedControl.Invalidate);

                ////以下代码与非演示状态一样。
                //m2m_NN.PreProcess(randomPositionSet_InFixedDistribution);
                //m2m_NN.NearestNeighbor(layersPaintedControl.GetMouseDoubleChickedRealPosition());
                //while (true)
                //{
                //    for (int i = layers.Count - 1; i >= 0; i--)
                //    {
                //        if ((layers[i].Name != "M2MStructure") && (layers[i].Name != "PositionSetOfComparedPoint"))
                //        {
                //            layers.Remove(layers[i]);
                //        }
                //    }

                //    m2m_NN.NearestNeighbor(getRandomPositionFromPositionSetRectangle.Get());
                //}

                ////结束演示(解除事件响应的绑定)
                //algorithmDemo_M2M_NN.EndDemo();
                ///////////////////////////////////////

                //对m2m_CH算法进行演示:
                //为对象的事件添加事件响应,以进行算法演示
                AlgorithmDemo_M2M_CH algorithmDemo_M2M_CH = new AlgorithmDemo_M2M_CH(m2m_CH, layers, flowControlerForm, layersPaintedControl.Invalidate);
                while (true)
                {
                    layers.Clear();
                    //以下代码与非演示状态一样。
                    m2m_CH.ConvexHull(randomPositionSet_InFixedDistribution.Produce());
                }

                //结束演示(解除事件响应的绑定)
                //algorithmDemo_M2M_CH.EndDemo();
            }).BeginInvoke(null, null);
        }