ESyS-Particle  2.3
Corner.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef __CORNER_H
14 #define __CORNER_H
15 
16 //-- Project includes --
17 #include "Foundation/vec3.h"
18 #include "Geometry/Triangle.h"
19 #include "Geometry/Edge.h"
20 
21 //-- STL includes --
22 #include <vector>
23 
24 using std::vector;
25 
34 class Corner
35 {
36  private:
39  vector<Edge*> m_edges;
40  vector<Triangle*> m_triangles;
41  int m_id;
42  int m_tag;
43 
44  public:
45  Corner(const Vec3&,int,int);
46 
47  void addEdge(Edge*);
48  void addTriangle(Triangle*);
49  double sep(const Vec3&) const;
50  // pair<bool,double> dist(const Vec3&) const ; // signed separation according to direction of the normal
51  bool isValidContact(const Vec3&) const;
52  Vec3 getDirectionFromPoint(const Vec3&) const;
53  void move(const Vec3&);
54  Vec3 getPos()const {return m_p;};
55  void setPos(const Vec3 &p) {m_p = p;}
56  void applyForce(const Vec3 &f);
57  int getID() const {return m_id;};
58  int getTag() const {return m_tag;};
59 
60  double getDistMoved() {return (m_old_pos-m_p).norm();};
61  void resetOldPos(){m_old_pos=m_p;};
62 };
63 
64 #endif // __CORNER_H
Definition: vec3.h:46
void setPos(const Vec3 &p)
Definition: Corner.h:55
void move(const Vec3 &)
Definition: Corner.cpp:119
Vec3 getPos() const
Definition: Corner.h:54
int m_tag
Definition: Corner.h:42
int getTag() const
Definition: Corner.h:58
Class representing the edge of a polygon.
Definition: Edge.h:35
double sep(const Vec3 &) const
Definition: Corner.cpp:70
int getID() const
Definition: Corner.h:57
void addEdge(Edge *)
Definition: Corner.cpp:35
void resetOldPos()
Definition: Corner.h:61
Class representing a Triangle.
Definition: Triangle.h:47
Vec3 getDirectionFromPoint(const Vec3 &) const
Definition: Corner.cpp:109
void addTriangle(Triangle *)
Definition: Corner.cpp:45
Vec3 m_old_pos
Definition: Corner.h:38
Vec3 m_p
Definition: Corner.h:37
int m_id
Definition: Corner.h:41
vector< Triangle * > m_triangles
Definition: Corner.h:40
double getDistMoved()
Definition: Corner.h:60
Class representing the corner of a polygon.
Definition: Corner.h:34
void applyForce(const Vec3 &f)
Definition: Corner.cpp:50
bool isValidContact(const Vec3 &) const
Definition: Corner.cpp:82
vector< Edge * > m_edges
Definition: Corner.h:39
Corner(const Vec3 &, int, int)
Definition: Corner.cpp:22