void buildEnvironment() { /* *----*----*--------* | | | | | A . | D | | | | | *----* C | | | | *--- --* | B . . | | | . E | *----*-------------* */ // Points env.addPoint(core::Pointf(0, 0)); // 0 env.addPoint(core::Pointf(0, 10)); // 1 env.addPoint(core::Pointf(10, 10)); // 2 env.addPoint(core::Pointf(10, 0)); // 3 env.addPoint(core::Pointf(5, 0)); // 4 env.addPoint(core::Pointf(10, -10)); // 5 env.addPoint(core::Pointf(0, -10)); // 6 env.addPoint(core::Pointf(-5, -10)); // 7 env.addPoint(core::Pointf(-5, -7)); // 8 env.addPoint(core::Pointf(-10, -10)); // 9 env.addPoint(core::Pointf(-10, 0)); // 10 env.addPoint(core::Pointf(-5, 0)); // 11 env.addPoint(core::Pointf(-5, -3)); // 12 env.addPoint(core::Pointf(-5, 3)); // 13 env.addPoint(core::Pointf(-10, 10)); // 14 env.addPoint(core::Pointf(-5, 10)); // 15 env.addPoint(core::Pointf(-5, 7)); // 16 env.addPoint(core::Pointf(3, 0)); // 17 // Walls env.addWall(Wall (14, 10, 0.0)); // 0 env.addWall(Wall (15, 14, 0.0)); // 1 env.addWall(Wall (1, 15, 0.0)); // 2 env.addWall(Wall (2, 1, 0.0)); // 3 env.addWall(Wall (3, 2, 0.0)); // 4 env.addWall(Wall (5, 3, 0.0)); // 5 env.addWall(Wall (6, 5, 0.0)); // 6 env.addWall(Wall (7, 6, 0.0)); // 7 env.addWall(Wall (9, 7, 0.0)); // 8 env.addWall(Wall (10, 9, 0.0)); // 9 env.addWall(Wall (10, 11, 0.0)); // 10 env.addWall(Wall (15, 16, 0.0)); // 11 env.addWall(Wall (13, 11, 0.0)); // 12 env.addWall(Wall (11, 12, 0.0)); // 13 env.addWall(Wall (8, 7, 0.0)); // 14 env.addWall(Wall (0, 1, 0.0)); // 15 env.addWall(Wall (17, 0, 0.0)); // 16 env.addWall(Wall (3, 4, 0.0)); // 17 env.addWall(Wall (8, 12, INFINITY)); // 18 env.addWall(Wall (0, 6, INFINITY)); // 19 env.addWall(Wall (17, 4, INFINITY)); // 20 env.addWall(Wall (16, 13, INFINITY)); // 21 // Rooms Room rA, rB, rC, rD, rE; rA.setIdx(0); rB.setIdx(1); rC.setIdx(2); rD.setIdx(3); rE.setIdx(4); // Room A rA.addWall(0, 1); rA.addWall(1, 1); rA.addWall(11, -1); rA.addWall(21, -1); rA.addWall(12, -1); rA.addWall(10, 1); env.addRoom(rA); // Room B rB.addWall(8, 1); rB.addWall(14, -1); rB.addWall(18, 1); rB.addWall(13, -1); rB.addWall(10, -1); rB.addWall(9, 1); env.addRoom(rB); // Room C rC.addWall(2, 1); rC.addWall(11, 1); rC.addWall(21, 1); rC.addWall(12, 1); rC.addWall(13, 1); rC.addWall(18, -1); rC.addWall(14, 1); rC.addWall(7, 1); rC.addWall(19, -1); rC.addWall(15, 1); env.addRoom(rC); // Room D rD.addWall(3, 1); rD.addWall(20, 1); rD.addWall(16, -1); rD.addWall(15, -1); rD.addWall(17, -1); rD.addWall(4, 1); env.addRoom(rD); // Room E rE.addWall(17, 1); rE.addWall(20, -1); rE.addWall(16, 1); rE.addWall(19, 1); rE.addWall(6, 1); rE.addWall(5, 1); env.addRoom(rE); Source src(rD, core::Pointf(5, 5)); env.setSource(src); std::vector<std::vector<Environment::GraphNode> > adj; adj.resize(env.getRooms().size()); env.buildAdjacencyGraph(adj); env.DFS(adj, src.getInsideRoom().getRoomIdx()); env.filterValidPaths(2); env.getValidPaths()->getNumberOfLeaves(env.getValidPaths()->_root, numberOfPaths); env.getValidPaths()->getDepth(env.getValidPaths()->_root, maximumDepth, 0); std::cout << numberOfPaths << " valid paths found" << std::endl; std::cout << "Depth: " << maximumDepth << std::endl; }