16 #ifndef _A_FACE_2D4_H_
17 #define _A_FACE_2D4_H_
24 #include "a_triangle.h"
35 virtual double S()
const;
37 virtual a_point
cl()
const;
39 a_point
v3d(
const int i)
const;
51 a_plane
plane()
const {
return a_plane(
v(0),
v(1),
v(0)+this->
ny());}
53 void slide(
const double& u,
const double&
v);
57 void grow(
const double& val);
63 std::vector<a_triangle>
triangles()
const;
65 bool contains(
const a_point& p)
const;
67 a_segment
segment(
const int i)
const;
69 a_segment
intersect(
const a_segment& s)
const;
a_face_2d4 * cf_2d4(a_face *f)
virtual double S() const
Surface.
std::vector< a_triangle > triangles() const
get 2 triangles defining the face
a_plane plane() const
plane defined by face
double dym() const
distance from center to min y
double exry() const
relative excentricity in y direction (between 0 and 1)
void slide(const double &u, const double &v)
slide the face in its plane
virtual int contacttype() const
contact type: (-2: no sister face, -1: not touching, 2: plane contact, 1: edge contact,...
double length() const
length of the face
a_point nx() const
direction of face
int ptsinplane(const a_plane &p) const
get number of points in plane
a_segment segment(const int i) const
get segment (world coordinate)
virtual a_point cl() const
centre of gravity of the face (in local coordinates)
bool contains(const a_point &p) const
check whether a point is inside the face
virtual a_segment contactsegment() const
return edge of contact if faces touch by one edge: hinge
a_face_2d4(a_block *b, int ref_face)
virtual a_point contactpoint() const
return point of contact if faces just touch by one point
a_segment intersect(const a_segment &s) const
intersection of face with a segment
a_point normal() const
normal to the face
virtual a_contact contactface() const
return common surface of contact
double thickness() const
thickness of the face
void grow(const double &val)
grow face
double dyM() const
distance from center to max y
a_point v3d(const int i) const
get vertex (world coordinate, 3D: 4 points: order v0-n, v0+n, v1+n, v1-n
a_point ny() const
normal to the vertices of the block
double exrx() const
relative excentricity in x direction (between 0 and 1)
a_point v(const int i) const
get vertex (in world coordinate)