Exemple #1
0
 public Graph(Vector2 startingPoint, int width, int height, float interval)
 {
     adjList = new Dictionary<DNode2, List<Edge>>();
     float minX = startingPoint.X;
     float minY = startingPoint.Y;
     float maxX = startingPoint.X + (width * interval);
     float maxY = startingPoint.Y + (height * interval);
     Vector2 testVec = new Vector2(minX, minY);
     DNode2 newNode = new DNode2(testVec);
     adjList.Add(newNode, new List<Edge>());
     Vector2 between = Vector2.Zero;
     for (float x = minX; x <= maxX; x += interval) {
         for (float y = minY; y <= maxY; y += interval) {
             newNode = new DNode2(x, y);
             if (y != minY) {
                 testVec.X = x;
                 testVec.Y = y - interval;
                 CheckAndConnect(testVec, newNode);
             }
             if (x != minX) {
                 testVec.X = x - interval;
                 testVec.Y = y;
                 CheckAndConnect (testVec, newNode);
             }
         }
     }
 }
Exemple #2
0
 public void CheckAndConnect(Vector2 vec, DNode2 node)
 {
     if (!isObstructed(vec, node.Coords)) { //condition for connectivity here
         DNode2 n = GetNode (vec);
         Edge newEdge = new Edge(node, n);
         AddToMap(node, newEdge);
         AddToMap(n, newEdge);
     }
 }
Exemple #3
0
 public void AddToMap(DNode2 n, Edge e)
 {
     List<Edge> edges = null;
     if (adjList.ContainsKey(n)) {
         edges = adjList[n];
         edges.Add(e);
         adjList[n] = edges;
     } else {
         edges = new List<Edge>();
         edges.Add(e);
         adjList.Add(n, edges);
     }
 }