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); }
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); }
//生成随机点集 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); }
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(); }
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); }
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(); }
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)); }
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); }