Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
Plane.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution Library.
2 *
3 *
4 * MoDELib is distributed without any warranty under the
5 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
6 */
7
8#ifndef model_Plane_H_
9#define model_Plane_H_
10
11#include <cfloat>
12#include <tuple>
13//#include <map>
14#include <Eigen/Dense>
15#include <iostream>
16
17
18namespace model
19{
20 template <int dim>
22 {
23// typedef Eigen::Matrix<double,dim,dim> MatrixDim;
24 };
25
26 template <>
27 struct LocalToGlobal<1>
28 {
29 static constexpr int dim=1;
30 typedef Eigen::Matrix<double,dim,1> VectorDim;
31 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
32 static MatrixDim getL2G(const VectorDim& );
33 };
34
35 template <>
36 struct LocalToGlobal<2>
37 {
38 static constexpr int dim=2;
39 typedef Eigen::Matrix<double,dim,1> VectorDim;
40 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
42 };
43
44 template <>
45 struct LocalToGlobal<3>
46 {
47 static constexpr int dim=3;
48 typedef Eigen::Matrix<double,dim,1> VectorDim;
49 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
51 };
52
53 template <int dim>
54 struct Plane
55 {
56 typedef Eigen::Matrix<double,dim,1> VectorDim;
57 typedef Eigen::Matrix<double,dim-1,1> VectorLowerDim;
58 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
59
60 const VectorDim P;
63
64 Plane(const VectorDim& p,const VectorDim& n);
65 bool contains(const VectorDim& P0) const;
66 bool isAbove(const VectorDim& P0) const;
67 bool isBelow(const VectorDim& P0) const;
68 VectorDim snapToPlane(const VectorDim& P0) const;
69 double distanceTo(const VectorDim& P0) const;
70 double signedDistanceTo(const VectorDim& P0) const;
71 VectorLowerDim localPosition(const VectorDim& point) const;
72 VectorDim globalPosition(const VectorLowerDim& point) const;
73 VectorLowerDim localDirection(const VectorDim& dir) const;
75 static MatrixDim getL2G(const VectorDim& z);
76 };
77}
78#endif
id z()
Eigen::Matrix< double, dim, 1 > VectorDim
Definition Plane.h:30
static MatrixDim getL2G(const VectorDim &)
Definition Plane.cpp:115
Eigen::Matrix< double, dim, dim > MatrixDim
Definition Plane.h:31
static constexpr int dim
Definition Plane.h:29
static MatrixDim getL2G(VectorDim z)
Definition Plane.cpp:120
Eigen::Matrix< double, dim, 1 > VectorDim
Definition Plane.h:39
Eigen::Matrix< double, dim, dim > MatrixDim
Definition Plane.h:40
static constexpr int dim
Definition Plane.h:38
static constexpr int dim
Definition Plane.h:47
static MatrixDim getL2G(VectorDim z)
Definition Plane.cpp:136
Eigen::Matrix< double, dim, 1 > VectorDim
Definition Plane.h:48
Eigen::Matrix< double, dim, dim > MatrixDim
Definition Plane.h:49
bool isBelow(const VectorDim &P0) const
Definition Plane.cpp:45
bool contains(const VectorDim &P0) const
Definition Plane.cpp:33
Plane(const VectorDim &p, const VectorDim &n)
Definition Plane.cpp:20
bool isAbove(const VectorDim &P0) const
Definition Plane.cpp:39
VectorDim snapToPlane(const VectorDim &P0) const
Definition Plane.cpp:51
const MatrixDim L2G
Definition Plane.h:62
Eigen::Matrix< double, dim-1, 1 > VectorLowerDim
Definition Plane.h:57
double signedDistanceTo(const VectorDim &P0) const
Definition Plane.cpp:63
Eigen::Matrix< double, dim, 1 > VectorDim
Definition Plane.h:56
Eigen::Matrix< double, dim, dim > MatrixDim
Definition Plane.h:58
double distanceTo(const VectorDim &P0) const
Definition Plane.cpp:57
VectorLowerDim localDirection(const VectorDim &dir) const
Definition Plane.cpp:90
VectorLowerDim localPosition(const VectorDim &point) const
Definition Plane.cpp:69
VectorDim globalPosition(const VectorLowerDim &point) const
Definition Plane.cpp:84
const VectorDim P
Definition Plane.h:60
VectorDim globalDirection(const VectorLowerDim &dir) const
Definition Plane.cpp:104
const VectorDim unitNormal
Definition Plane.h:61
static MatrixDim getL2G(const VectorDim &z)
Definition Plane.cpp:110
vertex p[3]