Ejemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="graph"></param>
 /// <param name="settings"></param>
 public SteinerFinder(HeGraphSim graph, SteinerFinderSettings settings = null)
 {
     _graph = graph;
     _graph.Compact();
     _settings = settings ?? new SteinerFinderSettings();
     SetTerminalStatus();
 }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="points"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public static SteinerFinder CreateFromPoints(IEnumerable <Vec3d> points, SteinerFinderSettings settings = null)
        {
            var graph = new HeGraphSim();

            // add vertices
            foreach (var p in points)
            {
                graph.AddVertex().Position = p;
            }

            // add central vertex
            int nv = graph.Vertices.Count;

            graph.AddVertex().Position = points.Mean();

            // add edges
            for (int i = 0; i < nv; i++)
            {
                graph.AddEdge(i, nv);
            }

            return(new SteinerFinder(graph, settings));
        }