public void Simple2NodeGraph() { Graph g = new Graph (); Node q1 = new Node (); Node q2 = new Node (); q1.Location = new Point(){ X = 1, Y = 5, Z = 0 }; q2.Location = new Point(){ X = 0, Y = -2, Z = 0 }; g.AddNode( q1 ); g.AddNode( q2 ); g.Join( q1, q2 ); int x = 0; double fke = 100; do { g.Compute(null); double ke = g.TotalKineticEnergy; double kediff = Math.Max( fke, ke ) - Math.Min( fke, ke ); Console.WriteLine("kediff = {0}", kediff ); if ( kediff < 0.001 ) break; if ( x++ > 1000 ) break; fke = ke; } while ( true ); }
public MainWindow() : base(Gtk.WindowType.Toplevel) { Build (); area = new CairoGraphic (); Box box = new HBox (true, 0); box.Add (area); this.Add (box); this.ShowAll (); Graph g = new Graph (); Graph.CoulombConstant += 15; Graph.SpringConstant += 25; Graph.Damping = 0.8; Node q1 = new Node (){ Mass = 3 }; Node q2 = new Node (){ Mass = 2 }; Node q3 = new Node (); Node q4 = new Node (); Node q5 = new Node (); Node q6 = new Node (); Node q7 = new Node (); q1.Charge = 1.5; q1.Data = new NodeData(){ Label = "CA KGroup", Stroke = new Color( 0.5, 0.5, 0.5, 0.5 ), Fill = new Color( 1, 1, 1, 1 ), Size = 60 }; q2.Charge = 1.5; q2.Data = new NodeData(){ Label = "CA AGroup", Stroke = new Color( 0.5, 0.5, 0.5, 0.5 ), Fill = new Color( 1, 1, 1, 1 ), Size = 60 }; q1.Location = new ForceGraph.Point(){ X = 12, Y = 5, Z = 0 }; q2.Location = new ForceGraph.Point(){ X = 0, Y = -2, Z = 0 }; q3.Location = new ForceGraph.Point(){ X = -4, Y = 13, Z = 5 }; q5.Location = new ForceGraph.Point(){ X = 1, Y = 0, Z = 0 }; q6.Location = new ForceGraph.Point(){ X = 2, Y = 10, Z = 0 }; q7.Location = new ForceGraph.Point(){ X = 3, Y = -6, Z = 0 }; g.AddNode( q1 ); g.AddNode( q2 ); g.AddNode( q3 ); g.AddNode( q4 ); g.AddNode( q5 ); g.AddNode( q6 ); g.AddNode( q7 ); g.Join( q1, q5 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) }; g.Join( q1, q6 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) }; g.Join( q1, q7 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) }; var grant = g.Join( q1, q2 ); grant.NaturalLength = 12; g.Join( q2, q3 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) }; g.Join( q2, q4 ).Data = new NodeData(){ Stroke = new Color( 0,0,0,0.1 ) }; area.ForceGraph = g; area.Magnification = 30; Thread t = new Thread( new ThreadStart( this.Render) ); t.Start(); area.AddEvents( (int) Gdk.EventMask.ButtonPressMask ); area.AddEvents( (int) Gdk.EventMask.ButtonReleaseMask ); area.AddEvents( (int) Gdk.EventMask.Button1MotionMask ); area.Sensitive = true; area.ButtonPressEvent += HandleHandleButtonPressEvent; area.ButtonReleaseEvent += HandleAreaButtonReleaseEvent; }
public void Simple3NodeGraph() { Graph g = new Graph (); Node q1 = new Node (); Node q2 = new Node (); Node q3 = new Node (); q1.Location = new Point(){ X = 1, Y = 5, Z = 0 }; q2.Location = new Point(){ X = 0, Y = -2, Z = 0 }; q3.Location = new Point(){ X = -4, Y = 3, Z = 5 }; g.AddNode( q1 ); g.AddNode( q2 ); g.AddNode( q3 ); g.Join( q1, q3 ); g.Join( q1, q2 ); g.ComputeFull( 0.0001 , null ); }