Пример #1
0
        ////
        //// Determine the number of intersection points between this atomic region and a segment.
        ////
        //public List<KeyValuePair<Point, Connection>> GetIntersections(Circle circle, Point endpt1, Point endp12)
        //{
        //    List<KeyValuePair<Point, Connection>> intersections = new List<KeyValuePair<Point, Connection>>();
        //    Point pt1 = null;
        //    Point pt2 = null;

        //    foreach (Connection conn in connections)
        //    {
        //        conn.FindIntersection(that, out pt1, out pt2);
        //        if (pt1 != null) intersections.Add(new KeyValuePair<Point, Connection>(pt1, conn));
        //        if (pt2 != null) intersections.Add(new KeyValuePair<Point, Connection>(pt2, conn));

        //        // A segment should only intersect an atomic region in 2 places.
        //        if (intersections.Count >= 2) break;
        //    }

        //    return intersections;
        //}

        //
        // Convert an atomic region to a planar graph.
        //
        public UndirectedPlanarGraph.PlanarGraph ConvertToPlanarGraph()
        {
            UndirectedPlanarGraph.PlanarGraph graph = new UndirectedPlanarGraph.PlanarGraph();

            if (!ordered)
            {
                OrderConnections();
            }

            //
            // Traverse the connections and add vertices / edges
            //
            foreach (Connection conn in connections)
            {
                graph.AddNode(conn.endpoint1);
                graph.AddNode(conn.endpoint2);

                graph.AddUndirectedEdge(conn.endpoint1, conn.endpoint2,
                                        new Segment(conn.endpoint1, conn.endpoint2).Length,
                                        conn.type == ConnectionType.ARC ? UndirectedPlanarGraph.EdgeType.REAL_ARC : UndirectedPlanarGraph.EdgeType.REAL_SEGMENT);
            }

            return(graph);
        }
Пример #2
0
        ////
        //// Determine the number of intersection points between this atomic region and a segment.
        ////
        //public List<KeyValuePair<Point, Connection>> GetIntersections(Circle circle, Point endpt1, Point endp12)
        //{
        //    List<KeyValuePair<Point, Connection>> intersections = new List<KeyValuePair<Point, Connection>>();
        //    Point pt1 = null;
        //    Point pt2 = null;
        //    foreach (Connection conn in connections)
        //    {
        //        conn.FindIntersection(that, out pt1, out pt2);
        //        if (pt1 != null) intersections.Add(new KeyValuePair<Point, Connection>(pt1, conn));
        //        if (pt2 != null) intersections.Add(new KeyValuePair<Point, Connection>(pt2, conn));
        //        // A segment should only intersect an atomic region in 2 places.
        //        if (intersections.Count >= 2) break;
        //    }
        //    return intersections;
        //}
        //
        // Convert an atomic region to a planar graph.
        //
        public UndirectedPlanarGraph.PlanarGraph ConvertToPlanarGraph()
        {
            UndirectedPlanarGraph.PlanarGraph graph = new UndirectedPlanarGraph.PlanarGraph();

            if (!ordered) OrderConnections();

            //
            // Traverse the connections and add vertices / edges
            //
            foreach (Connection conn in connections)
            {
                graph.AddNode(conn.endpoint1);
                graph.AddNode(conn.endpoint2);

                graph.AddUndirectedEdge(conn.endpoint1, conn.endpoint2,
                                        new Segment(conn.endpoint1, conn.endpoint2).Length,
                                        conn.type == ConnectionType.ARC ? UndirectedPlanarGraph.EdgeType.REAL_ARC : UndirectedPlanarGraph.EdgeType.REAL_SEGMENT);
            }

            return graph;
        }