/// <summary> /// Сгенерировать и показать треугольную сетку /// </summary> /// <param name="box"></param> private void GenerateMesh(EntityBox box) { Delaunay delaunay = new Delaunay(); List <Point2D> points = new List <Point2D>(); // // Получить ключевые точки // foreach (Entity entity in box.GetEntities()) { if (entity.IsVias()) { Point p = box.LambdaToScreen(entity.LambdaX, entity.LambdaY); Point2D point = new Point2D(p.X, p.Y); points.Add(point); } } if (points.Count < 3) { MessageBox.Show("3 or more keypoints required!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } // // Добавить ключевые точки по углам // AddCornerKeypoints(ref points, 25, 25); // // Триангулируем // List <Triangle> mesh = delaunay.GenMesh(points); // // Отобразить треугольную сетку // Random rnd = new Random(); foreach (Triangle tri in mesh) { Color randomColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)); AddTriangle(box, tri, randomColor); } }