示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="graphTag"></param>
        /// <param name="panelTag"></param>
        /// <param name="itemTag"></param>
        /// <returns></returns>
        private static MenuTag CreateMenuTag(int graphTag, int panelTag, GraphOption itemTag)
        {
            var m = new MenuTag {
                GraphTag = graphTag, PanelTag = panelTag, ItemTag = itemTag
            };

            return(m);
        }
示例#2
0
文件: Test.cs 项目: evstmax/CopyCtrl
        public void TestGraph()
        {
            var option = new GraphOption {
                xDelta = 20, yDelta = 0.5, yRatio = 0.5, SampleCount = 500
            };
            var graphPlotter = new GraphPlotter(option);

            graphPlotter.Plot(Math.Sin, new Interv(5, 102));
            graphPlotter.Plot(x => Math.Cos(x) + 1, new Interv(10, 90), 3);
            var graph          = graphPlotter.GetGraphBlock();
            var blockReference = new BlockReference(Point3d.Origin, graph);
            var first          = Interaction.GetPoint("\nSpecify extent point 1");

            Interaction.InsertScalingEntity(blockReference, first, "\nSpecify extent point 2");
        }
示例#3
0
        private MenuItem CreateSubMenu(string title, int gTag, int pTag, GraphOption iTag, GraphColour cTag)
        {
            var mTag = new MenuTag
            {
                GraphTag  = gTag,
                PanelTag  = pTag,
                ItemTag   = iTag,
                ColourTag = cTag
            };

            var menuItem = new MenuItem(title)
            {
                Tag = mTag, Checked = false
            };

            menuItem.Click += MenuContextClick;
            return(menuItem);
        }
示例#4
0
        public void AddEdge(Tuple <T, T> edge, GraphOption option)
        {
            switch (option)
            {
            case GraphOption.Undirected:
                if (AdjacencyList.ContainsKey(edge.Item1) &&
                    AdjacencyList.ContainsKey(edge.Item2)
                    )
                {
                    AdjacencyList[edge.Item1].Add(edge.Item2);
                    AdjacencyList[edge.Item2].Add(edge.Item1);
                }
                return;

            case GraphOption.Diirected:
                if (AdjacencyList.ContainsKey(edge.Item1) &&
                    AdjacencyList.ContainsKey(edge.Item2)
                    )
                {
                    AdjacencyList[edge.Item1].Add(edge.Item2);
                }
                return;

            case GraphOption.Transpose:
                if (AdjacencyList.ContainsKey(edge.Item1) &&
                    AdjacencyList.ContainsKey(edge.Item2)
                    )
                {
                    //	方向倒過來
                    AdjacencyList[edge.Item2].Add(edge.Item1);
                }
                return;

                return;

            default:
                throw new Exception("option not valid");
            }
        }
示例#5
0
 public Graph(IList <T> vertices, IList <Tuple <T, T> > edges, GraphOption option)
 {
     _vertices = vertices;
     _edges    = edges;
     //	點和線要完全分開也是很聰明的做法
     foreach (T vertex in vertices)
     {
         AddVertex(vertex);
     }
     foreach (var edge in edges)
     {
         AddEdge(edge, option);
     }
     //但是還是能在無知的情況下去搜尋才是正道   跟Dijkstra Shortest Path 有點像
     //不知道所有點的情況下   去構建出來   等於是創造一個通用演算法
     //也不是這樣說
     //實際上就算是手繪解 給你一個圖出來  也是要已知所有的點線  所以其實應該已經知道
     //原本想的可能例如現實世界的地圖   或者那種超大地圖  就會想像是從一個點往外延伸
     //但是其實  還是先已知圖  演算法才去分析
     //所以實際程式是分兩個動作  1 建構圖成資結  2 跑演算法
     //直接解紙本考題  會以為只有跑演算法的部分  就會以為全部都是邊探索邊得出的
     //而忽略了 1 的事實
 }
示例#6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="title"></param>
 /// <param name="gTag"></param>
 /// <param name="pTag"></param>
 /// <param name="iTag"></param>
 /// <returns></returns>
 private MenuItem CreateSubMenu(string title, int gTag, int pTag, GraphOption iTag)
 {
     // ReSharper disable once IntroduceOptionalParameters.Local
     return(CreateSubMenu(title, gTag, pTag, iTag, GraphColour.Black));
 }