コード例 #1
0
ファイル: Test.cs プロジェクト: MrTiggr/ForceGraph
        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 );
        }
コード例 #2
0
ファイル: MainWindow.cs プロジェクト: MrTiggr/ForceGraph
    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;
    }
コード例 #3
0
ファイル: Test.cs プロジェクト: MrTiggr/ForceGraph
        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 );
        }