diff --git a/test/test_draw.rb b/test/test_draw.rb new file mode 100644 index 0000000..bcade31 --- /dev/null +++ b/test/test_draw.rb @@ -0,0 +1,61 @@ +require 'igraph' +require 'cairo' + +g = IGraph.barabasi_game(100,3,false,false) + +vertices = g.to_a +layout = g.send(ARGV.shift.to_sym,*ARGV.map{|a| eval(a)}).to_a + +format = Cairo::FORMAT_ARGB32 +width = 1000 +height = 1000 + +surface = Cairo::ImageSurface.new(format, width, height) +cr = Cairo::Context.new(surface) + +# fill background with white +cr.set_source_rgba(1.0, 1.0, 1.0, 0.8) +cr.paint + +max_x = layout.map{|a| a[0]}.max +min_x = layout.map{|a| a[0]}.min +max_y = layout.map{|a| a[1]}.max +min_y = layout.map{|a| a[1]}.min + +x_var = max_x - min_x +y_var = max_y - min_y + +max_var = [x_var,y_var].max + +layout.each_with_index do |a,i| + x,y = *a + + x = (x - min_x)/max_var + y = (y - min_y)/max_var + x *= (width) + y *= (height) + + layout[i] = [x,y] + + puts "#{x} #{y}" + +end + +layout.each_with_index do |a,i| + + v = vertices[i] + x,y = *a + + cr.set_source_rgba(rand,rand,rand,0.5) + cr.circle(x,y,1).fill + + g.adjacent_vertices(v,IGraph::OUT).each do |w| + cr.move_to(x,y) + wx,wy = *layout[vertices.index(w)] + cr.line_to(wx,wy) + cr.stroke + end + +end + +cr.target.write_to_png("test.png")