LBIBCell
 All Classes Functions Variables Friends Pages
Rectangle.cpp
1 /* Copyright (c) 2013 David Sichau <mail"at"sichau"dot"eu>
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  *
21  */
22 #include <UtilLib/include/geometry/Rectangle.hpp>
23 namespace UtilLib {
24 namespace geometry {
26  double n,
27  double s,
28  double w,
29  double e) : north(n),
30  south(s),
31  west(w),
32  east(e)
33 {}
34 
36  double x,
37  double y,
38  double size) : north(y + size / 2),
39  south(y - size / 2),
40  west(x - size / 2),
41  east(x + size / 2) {}
42 
43 bool Rectangle::within(const Rectangle& rect) const {
44  return within(rect.north, rect.south, rect.west, rect.east);
45 }
46 
48  double n,
49  double s,
50  double w,
51  double e) const {
52  if (s > north || s < south)
53  return false;
54  if (n < south || n > north)
55  return false;
56  if (w > east || w < west)
57  return false;
58  if (e < west || e > east)
59  return false;
60  return true;
61 }
62 
64  double x,
65  double y) const {
66  if ((x >= west) && (x < east) && (y <= north) && (y > south)) {
67  return true;
68  } else {
69  return false;
70  }
71 }
72 } // end namespace
73 } // end namespace
const double north
the north border
Definition: Rectangle.hpp:74
const double south
the north border
Definition: Rectangle.hpp:75
const double west
the north border
Definition: Rectangle.hpp:76
Rectangle(double ymax, double ymin, double xmin, double xmax)
Rectangle Constructs a rectangle.
Definition: Rectangle.cpp:25
bool within(const Rectangle &rect) const
within Is rect contained inside this rect
Definition: Rectangle.cpp:43
bool pointWithinBounds(double x, double y) const
pointWithinBounds Checks if point is contained inside this rectangle
Definition: Rectangle.cpp:63
const double east
the north border
Definition: Rectangle.hpp:77
a class representing a rectangle
Definition: Rectangle.hpp:30