DiGraph - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать DiGraph в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# DiGraph

Направленный ациклический граф (DAG). В «Вердж3Д» данная структура данных используется для определения иерархии в нодовых материалах.

## Конструктор

### DiGraph(V : Integer)

Создаёт новый граф с размером (количеством узлов) `V`.

## Свойства

### # .V : Integer

Размер графа.

### # .adjList : Array

Список связанных узлов графа.

### # .nodeInfo : Array

Данные привязанные к узлам графа.

### # .edges : Object

Рёбра графа.

## Методы

### # .addNode(nodeInfo : Object)

Добавляет новый узел к графу и привязывает к нему данные .nodeInfo.

### # .removeAll()

Удаляет все узлы и рёбра из графа.

### # .addEdge(edge : Edge)

Добавляет ребро к графу.

### # .addNewEdge(v : Integer, w : Integer) → Edge

Добавляет ребро к графу, соединяющее узлы `v` и `w`.

### # .removeEdge(v : Integer, w : Integer)

Удаляет ребро, соединяющее узлы `v` и `w`.

### # .edge(v : Integer, w : Integer) → Edge

Возвращает ребро, соединяющее узлы `v` и `w`. Возвращает `null` в случае, если ребро не найдено.

### # .adj(v : Integer) → Integer

Возвращает узел, смежный к узлу `v`.

### # .node(v : Integer) → Object

Возвращает данные, привязанные к узлу `v`.

### # .nodeINdex(nodeInfo : Object) → Integer

Возвращает индекс узла, соответствующего данным .nodeInfo.

### # .reverse() → DiGraph

Возвращает новый граф с инвертированными рёбрами. Исходный граф не изменяется.

### # .len() → DiGraph

Возвращает размер графа.

### # .findInEdges(v : Integer) → Array

Возвращает входящие рёбра узла `v`.

### # .findOutEdges(v : Integer) → Array

Возвращает исходящие рёбра узла `v`.

### # .disconnect(v : Integer, removeNode : Boolean)

Отделяет узел `v` от графа. Если `removeNode=false` (по умолчанию) оставляет данный узел внутри графа. Если `removeNode=true` также удаляет узел (и связанные с ним данные).

### # .insert(G : DiGraph, edgesInG : Array, edgesOutG : Array, copyNodeCb : Function, copyEdgeCb : Function)

Вставляет подграф `G` в граф. Массивы `edgesInG` и `edgesOutG` содержат входящие и исходящие рёбра, которые будут использоваться для присоединения подграфа. Опциональные коллбеки `copyNodeCb` и `copyEdgeCb` вызываются для каждого узла/ребра, вставляемого в граф.

### # .vis(labelCallback : Function)

Преобразует граф в формат DOT (Graphviz) и выводит соответствующие данные в браузерную консоль. Необязательный параметр `labelCallback` используется для присоединения меток к печатаемым узлам графа. В данный коллбек передаются индекс узла и присоединённые данные в качестве параметров.

## Исходный файл

О том как получить исходный код этого модуля читайте тут.