Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/netgen/libsrc/stlgeom/meshstlsurface.hpp
3206 views
1
#ifndef FILE_MESHSTLSURF
2
#define FILE_MESHSTLSURF
3
4
/* *************************************************************************/
5
/* File: meshstlsurf.hpp */
6
/* Author: Johannes Gerstmayr, Joachim Schoeberl */
7
/* Date: 01. Aug. 99 */
8
/* *************************************************************************/
9
10
/*
11
12
The interface between mesh generation and stl geometry
13
14
*/
15
16
17
///
18
class MeshingSTLSurface : public Meshing2
19
{
20
///
21
STLGeometry & geom;
22
///
23
int transformationtrig;
24
public:
25
///
26
MeshingSTLSurface (STLGeometry & ageom);
27
28
protected:
29
///
30
virtual void DefineTransformation (const Point3d & p1, const Point3d & p2,
31
const PointGeomInfo * geominfo1,
32
const PointGeomInfo * geominfo2);
33
///
34
virtual void TransformToPlain (const Point3d & locpoint, const MultiPointGeomInfo & geominfo,
35
Point2d & plainpoint, double h, int & zone);
36
///
37
virtual int TransformFromPlain (Point2d & plainpoint,
38
Point3d & locpoint,
39
PointGeomInfo & gi,
40
double h);
41
///
42
virtual int BelongsToActiveChart (const Point3d & p,
43
const PointGeomInfo & gi);
44
45
///
46
virtual int ComputePointGeomInfo (const Point3d & p, PointGeomInfo & gi);
47
///
48
virtual int ChooseChartPointGeomInfo (const MultiPointGeomInfo & mpgi,
49
PointGeomInfo & pgi);
50
51
///
52
virtual int IsLineVertexOnChart (const Point3d & p1, const Point3d & p2,
53
int endpoint, const PointGeomInfo & gi);
54
55
virtual void GetChartBoundary (ARRAY<Point2d > & points,
56
ARRAY<Point3d > & poitns3d,
57
ARRAY<INDEX_2> & lines, double h) const;
58
59
///
60
virtual double CalcLocalH (const Point3d & p, double gh) const;
61
62
///
63
virtual double Area () const;
64
};
65
66
67
68
///
69
class MeshOptimizeSTLSurface : public MeshOptimize2d
70
{
71
///
72
STLGeometry & geom;
73
74
public:
75
///
76
MeshOptimizeSTLSurface (STLGeometry & ageom);
77
78
///
79
virtual void SelectSurfaceOfPoint (const Point<3> & p,
80
const PointGeomInfo & gi);
81
///
82
virtual void ProjectPoint (INDEX surfind, Point<3> & p) const;
83
///
84
virtual void ProjectPoint2 (INDEX surfind, INDEX surfind2, Point<3> & p) const;
85
///
86
virtual int CalcPointGeomInfo(PointGeomInfo& gi, const Point<3> & p3) const;
87
///
88
virtual void GetNormalVector(INDEX surfind, const Point<3> & p, Vec<3> & n) const;
89
};
90
91
92
93
94
class RefinementSTLGeometry : public Refinement
95
{
96
const STLGeometry & geom;
97
98
public:
99
RefinementSTLGeometry (const STLGeometry & ageom);
100
virtual ~RefinementSTLGeometry ();
101
102
virtual void PointBetween (const Point<3> & p1, const Point<3> & p2, double secpoint,
103
int surfi,
104
const PointGeomInfo & gi1,
105
const PointGeomInfo & gi2,
106
Point<3> & newp, PointGeomInfo & newgi);
107
108
virtual void PointBetween (const Point<3> & p1, const Point<3> & p2, double secpoint,
109
int surfi1, int surfi2,
110
const EdgePointGeomInfo & ap1,
111
const EdgePointGeomInfo & ap2,
112
Point<3> & newp, EdgePointGeomInfo & newgi);
113
114
virtual void ProjectToSurface (Point<3> & p, int surfi);
115
virtual void ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi);
116
};
117
118
119
120
#endif
121
122
123