Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/netgen/libsrc/csg/triapprox.hpp
3206 views
1
#ifndef FILE_TRIAPPROX
2
#define FILE_TRIAPPROX
3
4
/**************************************************************************/
5
/* File: triapprox.hh */
6
/* Author: Joachim Schoeberl */
7
/* Date: 2. Mar. 98 */
8
/**************************************************************************/
9
10
/**
11
Triangulated approxiamtion to true surface
12
*/
13
14
15
class TATriangle
16
{
17
int pi[3];
18
int surfind;
19
public:
20
TATriangle () { ; }
21
22
TATriangle (int si, int pi1, int pi2, int pi3)
23
{ surfind = si; pi[0] = pi1; pi[1] = pi2; pi[2] = pi3; }
24
25
int SurfaceIndex() const { return surfind; }
26
int & SurfaceIndex() { return surfind; }
27
28
int & operator[] (int i) { return pi[i]; }
29
const int & operator[] (int i) const { return pi[i]; }
30
};
31
32
33
class TriangleApproximation
34
{
35
ARRAY<Point<3> > points;
36
ARRAY<Vec<3> > normals;
37
ARRAY<TATriangle> trigs;
38
39
public:
40
TriangleApproximation();
41
int GetNP () const { return points.Size(); }
42
int GetNT () const { return trigs.Size(); }
43
44
int AddPoint (const Point<3> & p) { points.Append (p); return points.Size()-1; }
45
int AddNormal (const Vec<3> & n) { normals.Append (n); return normals.Size()-1; }
46
int AddTriangle (const TATriangle & tri, bool invert = 0);
47
48
const Point<3> & GetPoint (int i) const { return points[i]; }
49
const TATriangle & GetTriangle (int i) const { return trigs[i]; }
50
const Vec<3> & GetNormal (int i) const { return normals[i]; }
51
52
void RemoveUnusedPoints ();
53
54
friend class CSGeometry;
55
};
56
57
#endif
58
59