xmsgeom  1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
TrTin.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 <iosfwd> // forward declaration of ostream
14 
15 // 4. External library headers
16 #include <boost/serialization/assume_abstract.hpp>
17 
18 // 5. Shared code headers
19 #include <xmscore/points/ptsfwd.h>
20 #include <xmscore/misc/base_macros.h> // for XM_DISALLOW_COPY_AND_ASSIGN
21 #include <xmscore/misc/boost_defines.h> // for BSHP
22 #include <xmscore/stl/vector.h> // for VecPt3d
23 #include <xmscore/stl/set.h> // for SetInt
24 
25 namespace boost
26 {
27 namespace serialization
28 {
29 class access;
30 }
31 }
32 namespace xms
33 {
35 class TrTin
36 {
38  friend class boost::serialization::access;
40 public:
41  static BSHP<TrTin> New();
43 
44  // Setters
45  virtual void SetPoints(BSHP<VecPt3d> a_pts) = 0;
46  virtual void SetTriangles(BSHP<VecInt> a_tris) = 0;
47  virtual void SetTrianglesAdjacentToPoints(BSHP<VecInt2d> a_trisAdjToPts) = 0;
48  virtual void SetGeometry(BSHP<VecPt3d> a_pts,
49  BSHP<VecInt> a_tris,
50  BSHP<VecInt2d> a_trisAdjToPts) = 0;
51 
52  // Getters
53  virtual VecPt3d& Points() = 0;
54  virtual VecInt& Triangles() = 0;
55  virtual VecInt2d& TrisAdjToPts() = 0; // Triangles adjacent to points
56 
57  virtual const VecPt3d& Points() const = 0;
58  virtual const VecInt& Triangles() const = 0;
59  virtual const VecInt2d& TrisAdjToPts() const = 0; // Triangles adjacent to points
60 
61  virtual BSHP<VecPt3d> PointsPtr() = 0;
62  virtual BSHP<VecInt> TrianglesPtr() = 0;
63 
64  virtual int NumPoints() const = 0;
65  virtual int NumTriangles() const = 0;
66 
67  // Non modifiers
68  virtual bool TriangleFromEdge(int a_pt1,
69  int a_pt2,
70  int& a_tri,
71  int& a_localPt1,
72  int& a_localPt2) const = 0;
73  virtual int TriangleAdjacentToEdge(int a_pt1, int a_pt2) const = 0;
74  virtual int LocalIndex(int a_tri, int a_pt) const = 0;
75  virtual int GlobalIndex(int a_triIdx, int a_localPt) const = 0;
76  virtual bool VerticesAreAdjacent(int a_pt1, int a_pt2) const = 0;
77  virtual int CommonEdgeIndex(int a_tri, int a_adjTri) const = 0;
78  virtual int AdjacentTriangle(int a_triIdx, int a_edgeIdx) const = 0;
79  virtual Pt3d TriangleCentroid(int a_tri) const = 0;
80  virtual double TriangleArea(int a_tri) const = 0;
81  // virtual int FirstBoundaryPoint () const = 0;
82  virtual int NextBoundaryPoint(int a_point) const = 0;
83  virtual int PreviousBoundaryPoint(int a_point) const = 0;
84  virtual void GetBoundaryPoints(VecInt& a_boundaryPoints) const = 0;
85  virtual void GetBoundaryPolys(VecInt2d& a_polys) const = 0;
86  virtual bool GetExtents(Pt3d& a_mn, Pt3d& a_mx) const = 0;
87  virtual void ExportTinFile(std::ostream& a_os) const = 0;
88 
89  // Modifiers
90  virtual bool SwapEdge(int a_triA, int a_triB, bool a_checkAngle = true) = 0;
91  virtual void DeleteTriangles(const SetInt& a_triangles) = 0;
92  virtual void DeletePoints(const SetInt& a_points) = 0;
93  virtual bool OptimizeTriangulation() = 0;
94  virtual void BuildTrisAdjToPts() = 0; // Triangles adjacent to points
95  virtual void Clear() = 0;
96 
97  virtual std::string ToString() const = 0;
98  virtual void FromString(const std::string&) = 0;
99  template <typename Archive>
100  void serialize(Archive& /*archive*/, const unsigned int /*version*/)
101  {
102  }
104 
105  virtual ~TrTin(); // moved from protected for boost serialize
106 protected:
107  TrTin();
108 
109 private:
111 
112 }; // class TrTin
113 
114 //----- Global methods ---------------------------------------------------------
115 
116 void trRenumberOnDelete(const SetInt& a_deleting, VecInt& a_vec);
117 
118 } // namespace xms
119 
120 BOOST_SERIALIZATION_ASSUME_ABSTRACT(xms::TrTin)
virtual ~TrTin()
destructor
Definition: TrTin.cpp:1240
std::vector< int > VecInt
std::set< int > SetInt
static BSHP< TrTin > New()
Create a TrTinImpl object.
Definition: TrTin.cpp:1247
std::vector< Pt3d > VecPt3d
#define XM_DISALLOW_COPY_AND_ASSIGN(TypeName)
TrTin()
constructor
Definition: TrTin.cpp:1234
std::vector< VecInt > VecInt2d