AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

digraph

digraph(有向图) 是Graph库中的一种图形类型。它由一组节点和一组有向边组成。digraph 中每条边都是有方向的,即只能从一个节点开始,指向另一个节点。digraph 常用于描述数据之间的有向关系,比如网站的链接关系等。

API

yuka.Graph.digraph()

创建一个新的有向图。返回一个新的digraph对象。

digraph.addNode(name, attrs)

添加一个新节点到digraph中。name参数是节点的名称,attrs是节点的属性对象。属性对象是可选的,可以用来设置节点的样式、文本等属性。

digraph.addEdge(from, to, attrs)

在digraph 中添加从from节点指向to节点的一条有向边。from 和 to 参数分别是有向边的起点和终点。attrs 是可选的,可用于设置边的样式、文本、权重等属性。

digraph.node(name, attrs)

获取指定名称的节点的属性对象。attrs 是可选的,如果指定了attrs,则更新节点的属性。

digraph.edge(from, to, attrs)

获取从 from 节点到 to 节点的有向边的属性对象。attrs 是可选的,如果指定了attrs,则更新边的属性。

digraph.removeNode(name)

删除digraph中指定名称的节点,以及该节点相关的所有有向边。

digraph.removeEdge(from, to)

删除digraph中从 from 节点到 to 节点的有向边。

digraph.nodes()

获取digraph 中所有节点的名称列表。

digraph.edges()

获取digraph 中所有有向边的列表,每个元素由起点、终点和属性组成。

digraph.outEdges(node)

获取指定节点汇出的所有有向边的列表,每个元素由终点和属性组成。

digraph.inEdges(node)

获取指定节点源入的所有有向边的列表,每个元素由起点和属性组成。

digraph.successors(node)

获取指定节点的所有后继节点的名称列表。

digraph.predecessors(node)

获取指定节点的所有前驱节点的名称列表。

示例

// 创建一个新的有向图
var graph = yuka.Graph.digraph();

// 添加节点
graph.addNode('a', { style: 'filled', fillcolor: 'red', label: 'A'});
graph.addNode('b', { style: 'filled', fillcolor: 'green', label: 'B'});
graph.addNode('c', { style: 'filled', fillcolor: 'blue', label: 'C'});
graph.addNode('d');

// 添加有向边
graph.addEdge('a', 'b', { label: '1', weight: 10 });
graph.addEdge('b', 'c', { label: '2', weight: 20 });
graph.addEdge('c', 'a', { label: '3', weight: 30 });
graph.addEdge('d', 'a');

// 获取节点和边
console.log(graph.nodes()); // ['a', 'b', 'c', 'd']
console.log(graph.edges()); // [['a', 'b', { label: '1', weight: 10 }], ['b', 'c', {label: '2', weight: 20 }], ['c', 'a', { label: '3', weight: 30 }], ['d', 'a']]

// 删除节点和边
graph.removeNode('a');
console.log(graph.nodes()); // ['b', 'c', 'd']
console.log(graph.edges()); // [['b', 'c', {label: '2', weight: 20 }]]

// 更新节点和边
graph.node('b', { label: 'BB'});
graph.node('c').style = 'dotted';
graph.edge('b', 'c', { label: '22', weight: 200 });

// 获取节点的相关信息
console.log(graph.successors('b')); // ['c']
console.log(graph.outEdges('b')); // [['b', 'c', { label: '22', weight: 200 }]]
console.log(graph.predecessors('c')); // ['b']
console.log(graph.inEdges('c')); // [['b', 'c', { label: '22', weight: 200 }]]