1
+ -- See http://www.lua.org/pil/16.html and http://www.lua.org/pil/16.1.html for more information
2
+ require (" Actions" )
3
+ require (" getScriptFilename" )
4
+ vrjLua .appendToModelSearchPath (getScriptFilename ())
5
+ function runfile (fn ) dofile (vrjLua .findInModelSearchPath (fn )) end
6
+
7
+ -- I split stuff up since it got hard to read once I commented it
8
+ runfile ([[ ..\graph\loadGraphFiles.lua]] )
9
+ runfile ([[ ..\graph\simpleLightsGraph.lua]] )
10
+
11
+
12
+
13
+
14
+ -- A graph is G=(V, E)
15
+ g = Graph (
16
+ {
17
+ [" 0" ] = GraphNode {position = {2 , 10 , 0 }};
18
+ [" 1" ] = GraphNode {position = {1.5 , 9 , 0 }};
19
+ [" 2" ] = GraphNode {position = {2.5 , 9 , 0 }};
20
+ [" 3" ] = GraphNode {position = {2.5 , 8 , 0 }};
21
+ [" 4" ] = GraphNode {position = {1.5 , 8 , 0 }};
22
+ [" 5" ] = GraphNode {position = {3 , 7 , 0 }};
23
+ [" 6" ] = GraphNode {position = {0 , 7 , 0 }};
24
+ [" 7" ] = GraphNode {position = {2 , 7 , 0 }};
25
+ [" 8" ] = GraphNode {position = {1 , 7 , 0 }};
26
+ [" 9" ] = GraphNode {position = {0 , 5 , 0 }};
27
+ [" 10" ] = GraphNode {position = {4 / 3 , 6 , 0 }};
28
+ [" 11" ] = GraphNode {position = {4 , 7 , 0 }};
29
+ [" 12" ] = GraphNode {position = {2 , 5 , 0 }};
30
+ [" 13" ] = GraphNode {position = {10 / 3 , 6 , 0 }};
31
+ [" 14" ] = GraphNode {position = {2 / 3 , 5 , 0 }};
32
+ [" 15" ] = GraphNode {position = {4 , 6 , 0 }};
33
+ [" 16" ] = GraphNode {position = {4 , 5 , 0 }};
34
+ [" 17" ] = GraphNode {position = {0 , 6 , 0 }};
35
+ [" 18" ] = GraphNode {position = {2 , 6 , 0 }};
36
+ [" 19" ] = GraphNode {position = {2 / 3 , 6 , 0 }};
37
+ [" 20" ] = GraphNode {position = {8 / 3 , 5 , 0 }};
38
+ [" 21" ] = GraphNode {position = {8 / 3 , 6 , 0 }};
39
+ [" 22" ] = GraphNode {position = {4 / 3 , 5 , 0 }};
40
+ [" 23" ] = GraphNode {position = {10 / 3 , 5 , 0 }};
41
+ [" 24" ] = GraphNode {position = {.5 , 4 , 0 }};
42
+ [" 25" ] = GraphNode {position = {3 , 4 , 0 }};
43
+ [" 26" ] = GraphNode {position = {2 , 4 , 0 }};
44
+ [" 27" ] = GraphNode {position = {0 , 4 , 0 }};
45
+ [" 28" ] = GraphNode {position = {2.5 , 4 , 0 }};
46
+ [" 29" ] = GraphNode {position = {1 , 4 , 0 }};
47
+ [" 30" ] = GraphNode {position = {3.5 , 4 , 0 }};
48
+ [" 31" ] = GraphNode {position = {4 , 4 , 0 }};
49
+ [" 32" ] = GraphNode {position = {1.5 , 4 , 0 }};
50
+ [" 33" ] = GraphNode {position = {2 , 3 , 0 }};
51
+
52
+ },
53
+ {
54
+ DirectedEdge (" 0" , " 1" );
55
+ DirectedEdge (" 0" , " 2" );
56
+ DirectedEdge (" 1" , " 4" );
57
+ DirectedEdge (" 2" , " 3" );
58
+ DirectedEdge (" 2" , " 1" );
59
+ DirectedEdge (" 3" , " 5" );
60
+ DirectedEdge (" 3" , " 6" );
61
+ DirectedEdge (" 4" , " 13" );
62
+ DirectedEdge (" 4" , " 14" );
63
+ DirectedEdge (" 4" , " 17" );
64
+ DirectedEdge (" 4" , " 7" );
65
+ DirectedEdge (" 5" , " 14" );
66
+ DirectedEdge (" 5" , " 18" );
67
+ DirectedEdge (" 5" , " 12" );
68
+ DirectedEdge (" 5" , " 19" );
69
+ DirectedEdge (" 5" , " 11" );
70
+ DirectedEdge (" 6" , " 13" );
71
+ DirectedEdge (" 6" , " 18" );
72
+ DirectedEdge (" 6" , " 10" );
73
+ DirectedEdge (" 6" , " 8" );
74
+ DirectedEdge (" 7" , " 22" );
75
+ DirectedEdge (" 7" , " 15" );
76
+ DirectedEdge (" 7" , " 14" );
77
+ DirectedEdge (" 7" , " 13" );
78
+ DirectedEdge (" 8" , " 10" );
79
+ DirectedEdge (" 8" , " 13" );
80
+ DirectedEdge (" 8" , " 9" );
81
+ DirectedEdge (" 8" , " 18" );
82
+ DirectedEdge (" 8" , " 21" );
83
+ DirectedEdge (" 9" , " 31" );
84
+ DirectedEdge (" 9" , " 28" );
85
+ DirectedEdge (" 9" , " 32" );
86
+
87
+ DirectedEdge (" 10" , " 29" );
88
+ DirectedEdge (" 10" , " 32" );
89
+ DirectedEdge (" 10" , " 27" );
90
+ DirectedEdge (" 11" , " 20" );
91
+ DirectedEdge (" 11" , " 16" );
92
+ DirectedEdge (" 11" , " 23" );
93
+ DirectedEdge (" 11" , " 14" );
94
+ DirectedEdge (" 11" , " 18" );
95
+ DirectedEdge (" 11" , " 12" );
96
+ DirectedEdge (" 12" , " 25" );
97
+ DirectedEdge (" 12" , " 29" );
98
+ DirectedEdge (" 12" , " 30" );
99
+ DirectedEdge (" 13" , " 26" );
100
+ DirectedEdge (" 13" , " 27" );
101
+ DirectedEdge (" 13" , " 28" );
102
+ DirectedEdge (" 14" , " 25" );
103
+ DirectedEdge (" 14" , " 24" );
104
+ DirectedEdge (" 14" , " 26" );
105
+ DirectedEdge (" 15" , " 24" );
106
+ DirectedEdge (" 15" , " 28" );
107
+ DirectedEdge (" 16" , " 31" );
108
+ -- DirectedEdge("16", "31");
109
+ DirectedEdge (" 16" , " 25" );
110
+ -- DirectedEdge("16", "25");
111
+ DirectedEdge (" 17" , " 27" );
112
+ -- DirectedEdge("17", "27");
113
+ DirectedEdge (" 17" , " 24" );
114
+ -- DirectedEdge("17", "24");
115
+ DirectedEdge (" 18" , " 26" );
116
+ DirectedEdge (" 18" , " 29" );
117
+ DirectedEdge (" 19" , " 24" );
118
+ -- DirectedEdge("19", "24");
119
+ DirectedEdge (" 19" , " 29" );
120
+ -- DirectedEdge("19", "29");
121
+ DirectedEdge (" 20" , " 30" );
122
+ -- DirectedEdge("20", "30");
123
+ DirectedEdge (" 20" , " 26" );
124
+ -- DirectedEdge("20", "26");
125
+ DirectedEdge (" 21" , " 26" );
126
+ -- DirectedEdge("21", "26");
127
+ DirectedEdge (" 21" , " 32" );
128
+ -- DirectedEdge("21", "32");
129
+ DirectedEdge (" 22" , " 28" );
130
+ -- DirectedEdge("22", "28");
131
+ DirectedEdge (" 22" , " 25" );
132
+ -- DirectedEdge("22", "25");
133
+ DirectedEdge (" 23" , " 30" );
134
+ DirectedEdge (" 23" , " 24" );
135
+ DirectedEdge (" 23" , " 31" );
136
+ DirectedEdge (" 24" , " 33" );
137
+ -- DirectedEdge("24", "33");
138
+ DirectedEdge (" 25" , " 33" );
139
+ -- DirectedEdge("25", "33");
140
+ DirectedEdge (" 26" , " 33" );
141
+ -- DirectedEdge("26", "33");
142
+ DirectedEdge (" 27" , " 33" );
143
+ -- DirectedEdge("27", "33");
144
+ DirectedEdge (" 28" , " 33" );
145
+ -- DirectedEdge("28", "33");
146
+ DirectedEdge (" 29" , " 33" );
147
+ -- DirectedEdge("29", "33");
148
+ DirectedEdge (" 30" , " 33" );
149
+ -- DirectedEdge("30", "33");
150
+ DirectedEdge (" 31" , " 33" );
151
+ -- DirectedEdge("31", "33");
152
+ DirectedEdge (" 32" , " 33" );
153
+ -- DirectedEdge("32", "33");
154
+ }
155
+ )
156
+ g .actionArgs = {small_num = .55 , damping = .80 , c_mult = 100 , h_mult = 10 , hooks = false }
157
+ RelativeTo .World :addChild (g .osg .root )
158
+ -- g:performAction()
159
+
160
+
161
+ local filename = string.match (getScriptFilename (), " (.-)([^\\ ]-([^%.]+))$" ) .. " adamGraph" .. " .dot"
162
+ local img_filename = string.match (getScriptFilename (), " (.-)([^\\ ]-([^%.]+))$" ) .. " adamGraph" .. " .png"
163
+ g :writeOutDotFile (filename )
164
+ -- print(img_filename)
165
+ os.execute ([[ "C:\Program Files (x86)\Graphviz2.30\bin\dot.exe"]] .. [[ -Tpng ]] .. filename .. [[ -o ]] .. img_filename )
166
+ os.execute ([[ "C:\Program Files (x86)\Graphviz2.30\bin\dot.exe" ]] .. filename .. [[ -o ]] .. filename .. [[ im]] )
0 commit comments