Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tianyazhichiC
algorithm-visualizer
提交
785bf195
A
algorithm-visualizer
项目概览
tianyazhichiC
/
algorithm-visualizer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
algorithm-visualizer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
“9ce8c2ed12550f90fd6e902990652b13df647793”上不存在“arch/i386/git@gitcode.net:openanolis/cloud-kernel.git”
提交
785bf195
编写于
5月 22, 2016
作者:
J
Jason Park
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add UndirectedGraph
上级
609ceea7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
138 addition
and
7 deletion
+138
-7
index.html
index.html
+1
-0
js/module/directed_graph.js
js/module/directed_graph.js
+6
-7
js/module/undirected_graph.js
js/module/undirected_graph.js
+131
-0
未找到文件。
index.html
浏览文件 @
785bf195
...
...
@@ -109,6 +109,7 @@
<script
src=
"js/ace/ace.js"
></script>
<script
src=
"js/module/tracer.js"
></script>
<script
src=
"js/module/directed_graph.js"
></script>
<script
src=
"js/module/undirected_graph.js"
></script>
<script
src=
"js/module/weighted_directed_graph.js"
></script>
<script
src=
"js/module/array2d.js"
></script>
<script
src=
"js/module/array1d.js"
></script>
...
...
js/module/directed_graph.js
浏览文件 @
785bf195
...
...
@@ -68,8 +68,7 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
root
=
root
||
0
;
var
maxDepth
=
-
1
;
var
chk
=
[];
for
(
var
i
=
0
;
i
<
G
.
length
;
i
++
)
chk
.
push
(
false
);
var
chk
=
new
Array
(
G
.
length
);
var
getDepth
=
function
(
node
,
depth
)
{
if
(
chk
[
node
])
throw
"
the given graph is not a tree because it forms a circuit
"
;
chk
[
node
]
=
true
;
...
...
@@ -233,6 +232,7 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
color
=
defaultEdgeColor
;
break
;
}
return
color
;
},
drawLabel
:
function
(
node
,
context
,
settings
)
{
...
...
@@ -306,10 +306,10 @@ DirectedGraphTracer.prototype = $.extend(true, Object.create(Tracer.prototype),
drawOnHover
:
function
(
node
,
context
,
settings
,
next
)
{
var
tracer
=
this
;
context
.
setLineDash
([
5
,
5
]);
var
nodeIdx
=
node
.
id
.
substring
(
1
);
graph
.
edges
().
forEach
(
function
(
edge
)
{
var
ends
=
edge
.
id
.
substring
(
1
).
split
(
"
_
"
);
context
.
setLineDash
([
5
,
5
]);
if
(
ends
[
0
]
==
nodeIdx
)
{
var
color
=
'
#0ff
'
;
var
source
=
node
;
...
...
@@ -331,12 +331,11 @@ var DirectedGraph = {
random
:
function
(
N
,
ratio
)
{
if
(
!
N
)
N
=
5
;
if
(
!
ratio
)
ratio
=
.
3
;
var
G
=
[]
;
var
G
=
new
Array
(
N
)
;
for
(
var
i
=
0
;
i
<
N
;
i
++
)
{
G
.
push
([]
);
G
[
i
]
=
new
Array
(
N
);
for
(
var
j
=
0
;
j
<
N
;
j
++
)
{
if
(
i
==
j
)
G
[
i
].
push
(
0
);
else
G
[
i
].
push
((
Math
.
random
()
*
(
1
/
ratio
)
|
0
)
==
0
?
1
:
0
);
if
(
i
!=
j
)
G
[
i
][
j
]
=
(
Math
.
random
()
*
(
1
/
ratio
)
|
0
)
==
0
?
1
:
0
;
}
}
return
G
;
...
...
js/module/undirected_graph.js
0 → 100644
浏览文件 @
785bf195
function
UndirectedGraphTracer
(
module
)
{
if
(
DirectedGraphTracer
.
call
(
this
,
module
||
UndirectedGraphTracer
))
{
UndirectedGraphTracer
.
prototype
.
init
.
call
(
this
);
return
true
;
}
return
false
;
}
UndirectedGraphTracer
.
prototype
=
$
.
extend
(
true
,
Object
.
create
(
DirectedGraphTracer
.
prototype
),
{
constructor
:
UndirectedGraphTracer
,
init
:
function
()
{
var
tracer
=
this
;
s
.
settings
({
defaultEdgeType
:
'
def
'
});
sigma
.
canvas
.
edges
.
def
=
function
(
edge
,
source
,
target
,
context
,
settings
)
{
var
color
=
tracer
.
getColor
(
edge
,
source
,
target
,
settings
);
tracer
.
drawEdge
(
edge
,
source
,
target
,
color
,
context
,
settings
);
};
},
_setData
:
function
(
G
)
{
if
(
Tracer
.
prototype
.
_setData
.
call
(
this
,
arguments
))
return
true
;
graph
.
clear
();
var
nodes
=
[];
var
edges
=
[];
var
unitAngle
=
2
*
Math
.
PI
/
G
.
length
;
var
currentAngle
=
0
;
for
(
var
i
=
0
;
i
<
G
.
length
;
i
++
)
{
currentAngle
+=
unitAngle
;
nodes
.
push
({
id
:
this
.
n
(
i
),
label
:
''
+
i
,
x
:
.
5
+
Math
.
sin
(
currentAngle
)
/
2
,
y
:
.
5
+
Math
.
cos
(
currentAngle
)
/
2
,
size
:
1
,
color
:
this
.
color
.
default
});
}
for
(
var
i
=
0
;
i
<
G
.
length
;
i
++
)
{
for
(
var
j
=
0
;
j
<=
i
;
j
++
)
{
if
(
G
[
i
][
j
]
||
G
[
j
][
i
])
{
edges
.
push
({
id
:
this
.
e
(
i
,
j
),
source
:
this
.
n
(
i
),
target
:
this
.
n
(
j
),
color
:
this
.
color
.
default
,
size
:
1
});
}
}
}
graph
.
read
({
nodes
:
nodes
,
edges
:
edges
});
s
.
camera
.
goTo
({
x
:
0
,
y
:
0
,
angle
:
0
,
ratio
:
1
});
this
.
refresh
();
return
false
;
},
e
:
function
(
v1
,
v2
)
{
if
(
v1
>
v2
)
{
var
temp
=
v1
;
v1
=
v2
;
v2
=
temp
;
}
return
'
e
'
+
v1
+
'
_
'
+
v2
;
},
drawOnHover
:
function
(
node
,
context
,
settings
,
next
)
{
var
tracer
=
this
;
context
.
setLineDash
([
5
,
5
]);
var
nodeIdx
=
node
.
id
.
substring
(
1
);
graph
.
edges
().
forEach
(
function
(
edge
)
{
var
ends
=
edge
.
id
.
substring
(
1
).
split
(
"
_
"
);
if
(
ends
[
0
]
==
nodeIdx
)
{
var
color
=
'
#0ff
'
;
var
source
=
node
;
var
target
=
graph
.
nodes
(
'
n
'
+
ends
[
1
]);
tracer
.
drawEdge
(
edge
,
source
,
target
,
color
,
context
,
settings
);
if
(
next
)
next
(
edge
,
source
,
target
,
color
,
context
,
settings
);
}
else
if
(
ends
[
1
]
==
nodeIdx
)
{
var
color
=
'
#0ff
'
;
var
source
=
graph
.
nodes
(
'
n
'
+
ends
[
0
]);
var
target
=
node
;
tracer
.
drawEdge
(
edge
,
source
,
target
,
color
,
context
,
settings
);
if
(
next
)
next
(
edge
,
source
,
target
,
color
,
context
,
settings
);
}
});
},
drawEdge
:
function
(
edge
,
source
,
target
,
color
,
context
,
settings
)
{
var
prefix
=
settings
(
'
prefix
'
)
||
''
,
size
=
edge
[
prefix
+
'
size
'
]
||
1
;
context
.
strokeStyle
=
color
;
context
.
lineWidth
=
size
;
context
.
beginPath
();
context
.
moveTo
(
source
[
prefix
+
'
x
'
],
source
[
prefix
+
'
y
'
]
);
context
.
lineTo
(
target
[
prefix
+
'
x
'
],
target
[
prefix
+
'
y
'
]
);
context
.
stroke
();
}
});
var
UndirectedGraph
=
{
random
:
function
(
N
,
ratio
)
{
if
(
!
N
)
N
=
5
;
if
(
!
ratio
)
ratio
=
.
3
;
var
G
=
new
Array
(
N
);
for
(
var
i
=
0
;
i
<
N
;
i
++
)
G
[
i
]
=
new
Array
(
N
);
for
(
var
i
=
0
;
i
<
N
;
i
++
)
{
for
(
var
j
=
0
;
j
<
N
;
j
++
)
{
if
(
i
>
j
)
G
[
i
][
j
]
=
G
[
j
][
i
]
=
(
Math
.
random
()
*
(
1
/
ratio
)
|
0
)
==
0
?
1
:
0
;
}
}
return
G
;
}
};
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录