Ejemplo n.º 1
0
            /// <summary>
            /// Метод для визуализации графа
            /// </summary>
            public void Visualize()
            {
                //Считаем кол-во градусов
                int    N = 360 / NumberOfDots;
                double x = 0;
                double y = 0;

                //Определяем центр
                int startX = G.centrX,
                    startY = G.centrY;

                //Получаем координаты вершин
                for (int i = 0; i < NumberOfDots; i++)
                {
                    x = G.RTr * Math.Cos(((0 - N) * i) * Math.PI / 180);
                    y = G.RTr * Math.Sin(((0 - N) * i) * Math.PI / 180);

                    //Добавляем в массив вершин вершину с вычисленными координатами
                    Vertex v = new Vertex(startX + Convert.ToInt32(x), startY + Convert.ToInt32(y));
                    V.Add(v);
                }

                int[,] tmp = new int[NumberOfDots, NumberOfDots];

                for (int i = 0; i < NumberOfDots; i++)
                {
                    for (int j = 0; j < NumberOfDots; j++)
                    {
                        tmp[i, j] = Matrix[i, j];
                    }
                }

                //Проходим по матрице смежности, записываем в массив граней весь список существующих граней у графа
                for (int i = 0; i < NumberOfDots; i++)
                {
                    for (int j = 0; j < NumberOfDots; j++)
                    {
                        if (tmp[i, j] == 1)
                        {
                            Edge e = new Edge(i, j);
                            E.Add(e);
                            tmp[i, j] = 0;
                            tmp[j, i] = 0;
                        }
                    }
                }

                //Рисуем весь граф
                G.DrawAllGraph(V, E);
            }