void drawMesh(Graphics e) { if (meshs != null) { foreach (var mesh in meshs) { ArithmMeanGrade crit = new ArithmMeanGrade(); Gradient st = new Gradient(); for (int i = 0; i < mesh.Y - 1; i++) { for (int j = 0; j < mesh.X - 1; j++) { // st.GetCellColor(crit.Calculate(mesh)); System.Drawing.Point[] littlemesh = new System.Drawing.Point[4]; littlemesh[0] = new System.Drawing.Point((int)(mesh[i, j].X), (int)(mesh[i, j].Y)); littlemesh[1] = new System.Drawing.Point((int)(mesh[i + 1, j].X), (int)(mesh[i + 1, j].Y)); littlemesh[2] = new System.Drawing.Point((int)(mesh[i + 1, j + 1].X), (int)(mesh[i + 1, j + 1].Y)); littlemesh[3] = new System.Drawing.Point((int)(mesh[i, j + 1].X), (int)(mesh[i, j + 1].Y)); Geometry.Point[,] littlemesh2 = new Geometry.Point[2, 2]; littlemesh2[0, 0] = new Geometry.Point((int)(mesh[i, j].X), (int)(mesh[i, j].Y)); littlemesh2[0, 1] = new Geometry.Point((int)(mesh[i + 1, j].X), (int)(mesh[i + 1, j].Y)); littlemesh2[1, 0] = new Geometry.Point((int)(mesh[i, j + 1].X), (int)(mesh[i, j + 1].Y)); littlemesh2[1, 1] = new Geometry.Point((int)(mesh[i + 1, j + 1].X), (int)(mesh[i + 1, j + 1].Y)); int cols = 2; int rows = 2; RegMesh2D mesh2 = new RegMesh2D(littlemesh2, cols, rows); Brush br = new SolidBrush(st.GetCellColor(crit.Calculate(mesh2))); e.FillPolygon(br, littlemesh); } } for (int i = 0; i < mesh.Y; i++) { for (int j = 0; j < mesh.X; j++) { if (j != mesh.X - 1) { e.DrawLine(new Pen(Color.Black), (int)mesh[i, j].X, (int)mesh[i, j].Y, (int)mesh[i, j + 1].X, (int)mesh[i, j + 1].Y); } if (i != mesh.Y - 1) { e.DrawLine(new Pen(Color.Black), (int)mesh[i, j].X, (int)mesh[i, j].Y, (int)mesh[i + 1, j].X, (int)mesh[i + 1, j].Y); } } } } meshs = null; } }
private void Build_Click(object sender, EventArgs e) { Contour contour = new Contour(curves); if (contour.Size < 3 || contour.Size > 5) { return; } if (contour.Size == 5) { if (decompositor == null) { decompositor = new PentagonTriangleDecompose(); } IContour[] contourTEST; meshs = new List <RegMesh2D>(); IMeshGen generator; // = new TriaMeshGen(10, 10); contourTEST = decompositor.decomposed(contour); //тестовый код для пятиугольника foreach (var x in contourTEST) { if (x.Size == 4) { generator = new QuadCleverMeshGen(10); meshs.AddRange(generator.Generate(x)); } if (x.Size == 3) { generator = new TriaMeshGen(10); meshs.AddRange(generator.Generate(x)); } } } if (contour.Size == 4) { //IMeshGen generator = new QuadSimpleMeshGen(10, 10); IMeshGen generator = new QuadCleverMeshGen(10); //IMeshGen generator = new TriaMeshGen(10, 10); meshs = new List <RegMesh2D>(); meshs.Add(generator.Generate(contour)[0]); } if (contour.Size == 3) { meshs = new List <RegMesh2D>(); IMeshGen generator = new TriaMeshGen(10); meshs = generator.Generate(contour); } double qualitySum = 0; for (int i = 0; i < meshs.Count(); i++) { qualitySum += quality.Calculate(meshs[i]); } Quality.Text = Convert.ToString(qualitySum / meshs.Count()); Refresh(); }
public void CalculateTest() { ArithmMeanGrade target = new ArithmMeanGrade(); // TODO: инициализация подходящего значения int row = 4; int col = 4; IPoint[,] setka = new IPoint[row, col]; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { setka[i, j] = new Point(i + 1, j + 1); } } RegMesh2D mesh = new RegMesh2D(setka, 4, 4); // TODO: инициализация подходящего значения double expected = 1; // TODO: инициализация подходящего значения double actual; actual = target.Calculate(mesh); Assert.AreEqual(expected, actual); // Assert.Inconclusive("Проверьте правильность этого метода теста."); }