ESyS-Particle  2.3.4
Corner.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 __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();};
62 };
63 
64 #endif // __CORNER_H
Triangle
Class representing a Triangle.
Definition: Triangle.h:48
Corner::sep
double sep(const Vec3 &) const
Definition: Corner.cpp:70
Corner::m_edges
vector< Edge * > m_edges
Definition: Corner.h:39
Corner::getPos
Vec3 getPos() const
Definition: Corner.h:54
Corner::isValidContact
bool isValidContact(const Vec3 &) const
Definition: Corner.cpp:82
Corner.h
Corner::setPos
void setPos(const Vec3 &p)
Definition: Corner.h:55
Corner::addEdge
void addEdge(Edge *)
Definition: Corner.cpp:35
Corner::m_triangles
vector< Triangle * > m_triangles
Definition: Corner.h:40
Vec3::unit
VEC3_INLINE Vec3 unit() const
Definition: vec3.hpp:225
Corner::resetOldPos
void resetOldPos()
Definition: Corner.h:61
Corner::move
void move(const Vec3 &)
Definition: Corner.cpp:119
Corner::getID
int getID() const
Definition: Corner.h:57
Corner::m_id
int m_id
Definition: Corner.h:41
Corner::getDirectionFromPoint
Vec3 getDirectionFromPoint(const Vec3 &) const
Definition: Corner.cpp:109
Triangle.h
Corner
Class representing the corner of a polygon.
Definition: Corner.h:35
Corner::m_old_pos
Vec3 m_old_pos
Definition: Corner.h:38
Edge.h
Corner::applyForce
void applyForce(const Vec3 &f)
Definition: Corner.cpp:50
Vec3
Definition: vec3.h:47
Edge
Class representing the edge of a polygon.
Definition: Edge.h:36
vec3.h
Corner::m_tag
int m_tag
Definition: Corner.h:42
Corner::getTag
int getTag() const
Definition: Corner.h:58
Corner::addTriangle
void addTriangle(Triangle *)
Definition: Corner.cpp:45
Corner::m_p
Vec3 m_p
Definition: Corner.h:37
Corner::Corner
Corner(const Vec3 &, int, int)
Definition: Corner.cpp:22
Corner::getDistMoved
double getDistMoved()
Definition: Corner.h:60