Архив разработки (8 Кб, Mathcad-документ)
В данной работе используется возможность построения графика выражающего зависимость матрицы от матрицы.
С помощью функций DrawG() можно сформировать две матрицы.
В одной матрице будут записаны координаты начала и конца ребер графа по оси ординат, а в другой матрице координаты начала и конца ребер графа по оси абсцисс. А с помощью функции DrawS() можно сформировать две матрицы, содержащие координаты стрелочек.Таким образом используя эти четыре матрицы можно построить искомый граф. Вершины графа будут обозначены кружочками, а ребра- прямыми. Причем вершины графа будут располагаться по окружности и по порядку(вершина с номером 1 будет находиться посередине графика в его наивысшей, смотря по оси Y, точке). Программа предназначена для работы с графами, не содержащими петель и заданными матрицей смежности.
Matrix() - эта функция используется для генерации произвольного ориентированного графа, не содержащего петель, заданного матрицей смежности. Входными данными для функции является количество вершин генерируемого графа.


Функция DrawG() формирует две матрицы, каждая из которых содержит n столбцов (где n - количество ребер) и две строки. Элементы, находящиеся в одноименных столбцах, являются координатами двух смежных вершин (в одной матрице содержатся x-координаты, а в другой y-координаты). Входными данными для функции является матрица смежности.
 |
/ формируем два вектора, один
содержит x-координаты всех
вершин, а другой y-координаты. Это легко сделать если все вершины расположить по кругу
/ если вершина изолированная,
то координаты начала ребра и его конца должны совпадать
/ если вершина i соединена с вершиной j, записываем их координаты по оси OX в матрицу X, а координаты по оси OY в матрицу Y
/ матрица Num в одноименных столбцах содержит номера соединенных вершин. Она понадобится в функции DrawS()
|
Функция DrawS() формирует две матрицы, которые содержат координаты стрелочек, с помощью которых выделяется направление дуги в ориентированном графе.
Для реализации задачи в данной функции используется сдвиг начала координат и поворот системы координат на некоторый угол.
 |
/ находим углы наклона дуг и записываем их в вектор
/ если вершина изолирована, идем дальше
/ узнаем, из какой вершины выходит дуга (точнее, где содержится номер этой вершины - в первой или во второй строке матрицы). Если же ребро не имеет выделенного направления, идем дальше
/ смещаем центр координат в вершину и поворачиваем на угол наклона дуги
|


|