Fawkes API  Fawkes Development Version
polygon_node_constraint.cpp
1 /***************************************************************************
2  * polygon_node_constraint.cpp - Block nodes inside a polygon
3  *
4  * Created: Mon Jan 19 11:20:31 2015 (next to Super-C waiting for demo)
5  * Copyright 2015 Tim Niemueller
6  ****************************************************************************/
7 
8 /* This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Library General Public License for more details.
17  *
18  * Read the full text in the LICENSE.GPL file in the doc directory.
19  */
20 
21 #include <navgraph/constraints/polygon_node_constraint.h>
22 
23 #include <algorithm>
24 
25 namespace fawkes {
26 
27 /** @class NavGraphPolygonNodeConstraint <navgraph/constraints/polygon_constraint.h>
28  * Constraint that blocks nodes inside a polygon.
29  * @author Tim Niemueller
30  */
31 
32 /** Constructor.
33  * @param name name of node constraint
34  */
36 : NavGraphNodeConstraint(name)
37 {
38 }
39 
40 /** Constructor.
41  * @param name name of node constraint
42  * @param polygon polygon to add immediately
43  */
45  const Polygon & polygon)
47 {
48 }
49 
50 /** Virtual empty destructor. */
52 {
53 }
54 
55 bool
57 {
58  if (!polygons_.empty()) {
59  return true;
60  } else {
61  return false;
62  }
63 }
64 
65 bool
67 {
68  for (auto p : polygons_) {
69  Point point(node.x(), node.y());
70  if (in_poly(point, p.second)) {
71  return true;
72  }
73  }
74 
75  return false;
76 }
77 
78 } // end of namespace fawkes
fawkes::NavGraphNode
Definition: navgraph_node.h:40
fawkes::NavGraphPolygonConstraint::Polygon
std::vector< Point > Polygon
A vector of points makes a polygon.
Definition: polygon_constraint.h:62
fawkes::NavGraphPolygonNodeConstraint::blocks
virtual bool blocks(const fawkes::NavGraphNode &node)
Definition: polygon_node_constraint.cpp:71
fawkes::NavGraphPolygonNodeConstraint::~NavGraphPolygonNodeConstraint
virtual ~NavGraphPolygonNodeConstraint()
Virtual empty destructor.
Definition: polygon_node_constraint.cpp:56
fawkes::NavGraphPolygonNodeConstraint::NavGraphPolygonNodeConstraint
NavGraphPolygonNodeConstraint(const std::string &name)
Constructor.
Definition: polygon_node_constraint.cpp:40
fawkes::NavGraphNodeConstraint
Definition: node_constraint.h:40
fawkes
fawkes::NavGraphPolygonConstraint
Definition: polygon_constraint.h:38
fawkes::NavGraphPolygonNodeConstraint::compute
virtual bool compute(void)
Perform compuations before graph search and to indicate re-planning.
Definition: polygon_node_constraint.cpp:61