//public IPositionSet GetRamSet(int wRank, int hRank) //{ // List<IPosition> lst = new List<IPosition>(); // Position_Point ipos = null; // for (int i = 0; i < 100; i++) // { // ipos = new Position_Point(); // ipos.SetX(RandomMakerAlgorithm.RandomMaker.RapidBetween(0, wRank)); // ipos.SetY(RandomMakerAlgorithm.RandomMaker.RapidBetween(0, hRank)); // lst.Add(ipos); // } // PositionSetEdit_ImplementByICollectionTemplate pSet = new PositionSetEdit_ImplementByICollectionTemplate(lst); // return pSet; //} //public IPositionSet GetRamSet2() //{ // List<IPosition> lst = new List<IPosition>(); // Position_Point ipos = null; // ipos = new Position_Point(); // ipos.SetX(10); // ipos.SetY(20); // lst.Add(ipos); // ipos = new Position_Point(); // ipos.SetX(50); // ipos.SetY(70); // lst.Add(ipos); // ipos = new Position_Point(); // ipos.SetX(50); // ipos.SetY(90); // lst.Add(ipos); // ipos = new Position_Point(); // ipos.SetX(25); // ipos.SetY(30); // lst.Add(ipos); // PositionSetEdit_ImplementByICollectionTemplate pSet = new PositionSetEdit_ImplementByICollectionTemplate(lst); // return pSet; //} private void button1_Click(object sender, EventArgs e) { //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.Create(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)); PositionSet_Connected_Config config = new PositionSet_Connected_Config(); new ConfiguratedByForm(config); List <IPosition_Connected_Edit> list = RandomPositionList.generateRandomFloatPositions(config); IPositionSet_Connected pSet = new PositionSet_Connected(list); painterDialog.DrawPositionSet_Connected(pSet); 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 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(); 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); }
public static void lanch(IConvexHullEngine chEngine, IPositionSet ps) { PainterDialog painterDialog = new PainterDialog(); //求解凸包并作图 IPositionSet cps = chEngine.ConvexHull(ps); painterDialog.FillPolygon = true; painterDialog.Clear(); painterDialog.DrawPositionSet(ps); painterDialog.DrawConvexHull(cps); painterDialog.Show(); //测试凸包正确性 report = new CHTestAndReport(); ConvexHullCompare CHCompare = new ConvexHullCompare(ps, cps, (new QuickHull()).ConvexHull(ps)); CHCompare.Compare(); report.content = CHCompare.GetReport(); report.Show(); }
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)); }
private void ShowLine() { IWriteLineInGridEngine writeLineInGridEngine = new Line2Block(); //IWriteLineInGridEngine writeLineInGridEngine = new Line2Block(); IPositionSet line = writeLineInGridEngine.WriteLineInGrid(configurationForWriteLineInGridAlgorithm.GridWidth, configurationForWriteLineInGridAlgorithm.GridHeight, configurationForWriteLineInGridAlgorithm.StartPosition, configurationForWriteLineInGridAlgorithm.EndPosition); painterDialog.Clear(); painterDialog.Layers.Add(new Layer_Grid(10, 10, configurationForWriteLineInGridAlgorithm.GridWidth, configurationForWriteLineInGridAlgorithm.GridHeight, 0, 0)); IPositionSetEdit startAndEnd = new PositionSetEdit_ImplementByICollectionTemplate(); startAndEnd.AddPosition(configurationForWriteLineInGridAlgorithm.StartPosition); startAndEnd.AddPosition(configurationForWriteLineInGridAlgorithm.EndPosition); painterDialog.HoldOnMode(); painterDialog.SetShowModeToForm(); if (line != null) { Layer_PositionSet_Point layer = new Layer_PositionSet_Point(line); layer.Point.PointRadius = 2; layer.Point.PointColor = Color.Blue; painterDialog.Layers.Add(layer); } Layer_PositionSet_Path layer2 = new Layer_PositionSet_Path((IPositionSet)startAndEnd); layer2.PathLine.LineWidth = 2; layer2.PathLine.LineColor = Color.Red; painterDialog.Layers.Add(layer2); painterDialog.Show(); }
public static void lanch(IConvexHullEngine chEngine, int pointCount, float min, float max) { //求解凸包并作图 //IPositionSet ps = testData(); IPositionSet ps = new RandomPositionSet(pointCount, min, max); //System.Console.Out.WriteLine("position set:"); //printPositionSet(ps); IPositionSet cps = chEngine.ConvexHull(ps); //System.Console.Out.WriteLine("Jarvis Match:"); //printPositionSet(cps); PainterDialog.Clear(); PainterDialog.DrawPositionSet(ps); PainterDialog.DrawConvexHull(cps); PainterDialog.Show(); AnalyzeReport report = new AnalyzeReport(); //测试点集引用 cps.InitToTraverseSet(); ps.InitToTraverseSet(); bool correct = true; while (correct && cps.NextPosition()) { IPosition cp = cps.GetPosition(); bool find = false; ps.InitToTraverseSet(); while (!find && ps.NextPosition()) { IPosition p = ps.GetPosition(); if (cp == p) { find = true; } } if (!find) { correct = false; } } report.content += "引用测试:" + (correct ? "正确" : "错误") + "\n"; //测试凸包 if (correct) { report.content += "凸包正确性测试:\n"; IPositionSet cps_ref = (new QuickHull()).ConvexHull(ps); // System.Console.Out.WriteLine("Quick Hull:"); // printPositionSet(cps_ref); IPosition[] cpa = (IPosition[])(cps.ToArray()); IPosition[] cpa_ref = (IPosition[])(cps_ref.ToArray()); if (cpa.Length != cpa_ref.Length) { report.content += "数目不等"; correct = false; } if (correct) { int n = cpa.Length; int m = 0; int p = 0; for (; p < n; p++) { if (cpa[0] == cpa_ref[p]) { break; } } if (p == n) { correct = false; report.content += "发生错误!"; } if (correct) { for (int i = 0; i < n; i++) { if (cpa[i] == cpa_ref[(p + i + n) % n]) { m++; } } int tm = 0; for (int i = 0; i < n; i++) { if (cpa[i] == cpa_ref[(p - i + n) % n]) { tm++; } } if (tm > m) { m = tm; } report.content += "正确率:" + m.ToString() + "/" + n.ToString(); if (m == n) { report.content += "正确!"; } else { report.content += "不正确!"; } } } } report.Show(); }