ESyS-Particle  2.3.4
TriMesh.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __TRIMESH_H
14 #define __TRIMESH_H
15 
16 //--- TML includes ---
17 #include "tml/comm/comm.h"
18 
19 // -- Project includes --
20 #include "Geometry/Triangle.h"
21 #include "Geometry/Edge.h"
22 #include "Geometry/Corner.h"
23 #include "Model/MeshData.h"
24 #include "Foundation/vec3.h"
25 
26 // -- STL includes --
27 #include <vector>
28 #include <map>
29 #include <string>
30 
31 using std::vector;
32 using std::multimap;
33 using std::map;
34 using std::string;
35 
36 // -- IO includes ---
37 #include <iostream>
38 
39 using std::ostream;
40 
41 
50 class TriMesh
51 {
52  private:
53  vector<Triangle> m_triangles;
54  vector<Edge> m_edges;
55  vector<Corner> m_corners;
56  multimap<int,Triangle*> m_triangle_by_node_id;
57  multimap<int,Edge*> m_edge_by_node_id;
58  map<int,int> m_corner_by_id;
59 
60  map<int,int> m_tri_index_by_id;
61 
62  public:
63  // types
64  typedef vector<Triangle>::iterator triangle_iterator;
65  typedef vector<Edge>::iterator edge_iterator;
66  typedef vector<Corner>::iterator corner_iterator;
67 
68  // functions
69  TriMesh();
70 
71  virtual ~TriMesh()
72  {
73  }
74 
75  void LoadMesh(const vector<MeshNodeData>&,const vector<MeshTriData>&);
76  void moveNode(int,const Vec3&);
77  void translateBy(const Vec3 &translation);
80  edge_iterator edges_begin(){return m_edges.begin();};
81  edge_iterator edges_end(){return m_edges.end();};
85  bool hasMovedBy(double);
87 
88  void zeroForces();
89  virtual void writeCheckPoint(ostream&,const string&) const;
90  virtual void loadCheckPoint(istream&);
91 
92  // triangle data access functions
93  template <typename P> void forAllTrianglesGet(P&,typename P::value_type (Triangle::*rdf)() const);
94  template <typename P> vector<pair<int,P> > forAllTrianglesGetIndexed(P (Triangle::*rdf)() const);
95 };
96 
97 #include "TriMesh.hpp"
98 
99 #endif // __TRIMESH_H
TriMesh::getTriangleById
Triangle * getTriangleById(int)
Definition: TriMesh.cpp:234
Triangle
Class representing a Triangle.
Definition: Triangle.h:48
TriMesh::moveNode
void moveNode(int, const Vec3 &)
Definition: TriMesh.cpp:155
esys::lsm::NodeReader
read a block of nodes from a Finley mesh file.
Definition: MeshReader.h:38
TriMesh::edge_iterator
vector< Edge >::iterator edge_iterator
Definition: TriMesh.h:65
TriMesh::translateBy
void translateBy(const Vec3 &translation)
Definition: TriMesh.cpp:173
Corner.h
TriMesh::m_corner_by_id
map< int, int > m_corner_by_id
Definition: TriMesh.h:58
TriMesh.hpp
TriMesh::m_tri_index_by_id
map< int, int > m_tri_index_by_id
Definition: TriMesh.h:60
MeshData.h
Console::Error
Console & Error()
set verbose level of next message to "err"
console.h
esys::lsm::IterativeReader< IStreamIterator< MeshNodeData > >::Iterator
IStreamIterator< MeshNodeData > Iterator
Definition: IterativeReader.h:77
TriMesh::corners_begin
corner_iterator corners_begin()
Definition: TriMesh.h:82
TriMesh::m_triangle_by_node_id
multimap< int, Triangle * > m_triangle_by_node_id
Definition: TriMesh.h:56
MeshReader.h
TriMesh::triangles_begin
triangle_iterator triangles_begin()
Definition: TriMesh.h:78
TriMesh::loadCheckPoint
virtual void loadCheckPoint(istream &)
Definition: TriMesh.cpp:285
TriMesh::triangles_end
triangle_iterator triangles_end()
Definition: TriMesh.h:79
TriMesh::forAllTrianglesGet
void forAllTrianglesGet(P &, typename P::value_type(Triangle::*rdf)() const)
Definition: TriMesh.hpp:27
TriMesh::edges_end
edge_iterator edges_end()
Definition: TriMesh.h:81
TriMesh.h
TriMesh::LoadMesh
void LoadMesh(const vector< MeshNodeData > &, const vector< MeshTriData > &)
Definition: TriMesh.cpp:31
TriMesh::writeCheckPoint
virtual void writeCheckPoint(ostream &, const string &) const
Definition: TriMesh.cpp:255
TriMesh::hasMovedBy
bool hasMovedBy(double)
Definition: TriMesh.cpp:200
TriMesh::resetCurrentDisplacement
void resetCurrentDisplacement()
Definition: TriMesh.cpp:218
Console::XDebug
Console & XDebug()
set verbose level of next message to "xdg"
TriMesh::corners_end
corner_iterator corners_end()
Definition: TriMesh.h:83
NULL
#define NULL
Definition: t_list.h:17
Triangle.h
Corner
Class representing the corner of a polygon.
Definition: Corner.h:35
esys::lsm::IterativeReader::getIterator
Iterator & getIterator()
Definition: IterativeReader.hpp:113
TriMesh::m_edges
vector< Edge > m_edges
Definition: TriMesh.h:54
comm.h
Edge.h
TriMesh::triangle_iterator
vector< Triangle >::iterator triangle_iterator
Definition: TriMesh.h:64
TriMesh::zeroForces
void zeroForces()
Definition: TriMesh.cpp:312
TriMesh::m_edge_by_node_id
multimap< int, Edge * > m_edge_by_node_id
Definition: TriMesh.h:57
TriMesh::corner_iterator
vector< Corner >::iterator corner_iterator
Definition: TriMesh.h:66
Vec3
Definition: vec3.h:47
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
Edge
Class representing the edge of a polygon.
Definition: Edge.h:36
vec3.h
TriMesh::edges_begin
edge_iterator edges_begin()
Definition: TriMesh.h:80
TriMesh::m_triangles
vector< Triangle > m_triangles
Definition: TriMesh.h:53
TriMesh::~TriMesh
virtual ~TriMesh()
Definition: TriMesh.h:71
esys::lsm::TriReader
read a block of triangles from a Finley mesh file.
Definition: MeshReader.h:54
TriMesh::TriMesh
TriMesh()
Definition: TriMesh.cpp:22
console
Console console
Definition: console.cpp:25
TriMesh
class for a triangle mesh
Definition: TriMesh.h:51
TriMesh::forAllTrianglesGetIndexed
vector< pair< int, P > > forAllTrianglesGetIndexed(P(Triangle::*rdf)() const)
Definition: TriMesh.hpp:40
TriMesh::m_corners
vector< Corner > m_corners
Definition: TriMesh.h:55
esys::lsm
Lattice Solid Model namespace.
Definition: CheckPointable.cpp:19