xmsgeom  1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
GmPolygon.h
Go to the documentation of this file.
1 #pragma once
2 //------------------------------------------------------------------------------
8 //------------------------------------------------------------------------------
9 
10 //----- Included files ---------------------------------------------------------
11 
12 // 3. Standard library headers
13 #include <vector>
14 
15 // 4. External library headers
16 
17 // 5. Shared code headers
18 #include <xmscore/misc/boost_defines.h> // BSHP
19 #include <xmscore/stl/vector.h>
20 #include <xmscore/misc/base_macros.h> // for XM_DISALLOW_COPY_AND_ASSIGN
21 #include <xmscore/points/ptsfwd.h> // for Pt3d
22 
23 //----- Namespace --------------------------------------------------------------
24 
25 namespace xms
26 {
27 //----- Forward declarations ---------------------------------------------------
28 
29 //----- Classes ----------------------------------------------------------------
30 
34 class GmPolygon
35 {
36 public:
37  static BSHP<GmPolygon> New();
38  GmPolygon();
39  virtual ~GmPolygon();
40 
42  virtual void Setup(const VecPt3d& a_poly, const VecPt3d2d& a_inPolys) = 0;
43  virtual void GetPoints(VecPt3d& a_poly, VecPt3d2d& a_inPolys) const = 0;
44 
45  virtual bool CoveredBy(Pt3d a_point) const = 0;
46  virtual bool Within(Pt3d a_point) const = 0;
47  virtual double MinDistanceToBoundary(Pt3d a_pt) const = 0;
48  virtual void Intersection(const GmPolygon& a_, std::vector<BSHP<GmPolygon>>& a_output) const = 0;
49  virtual void Union(const GmPolygon& a_, std::vector<BSHP<GmPolygon>>& a_output) const = 0;
50 
51 private:
54 }; // class GmPolygon
55 
56 } // namespace xms
GmPolygon()
Constructor.
Definition: GmPolygon.cpp:277
Interface to a boost::geometry::polygon class.
Definition: GmPolygon.h:34
static BSHP< GmPolygon > New()
Creates a class.
Definition: GmPolygon.cpp:290
std::vector< VecPt3d > VecPt3d2d
virtual ~GmPolygon()
Destructor.
Definition: GmPolygon.cpp:283
std::vector< Pt3d > VecPt3d
#define XM_DISALLOW_COPY_AND_ASSIGN(TypeName)