Path: blob/devel/ElmerGUI/netgen/libsrc/csg/triapprox.hpp
3206 views
#ifndef FILE_TRIAPPROX1#define FILE_TRIAPPROX23/**************************************************************************/4/* File: triapprox.hh */5/* Author: Joachim Schoeberl */6/* Date: 2. Mar. 98 */7/**************************************************************************/89/**10Triangulated approxiamtion to true surface11*/121314class TATriangle15{16int pi[3];17int surfind;18public:19TATriangle () { ; }2021TATriangle (int si, int pi1, int pi2, int pi3)22{ surfind = si; pi[0] = pi1; pi[1] = pi2; pi[2] = pi3; }2324int SurfaceIndex() const { return surfind; }25int & SurfaceIndex() { return surfind; }2627int & operator[] (int i) { return pi[i]; }28const int & operator[] (int i) const { return pi[i]; }29};303132class TriangleApproximation33{34ARRAY<Point<3> > points;35ARRAY<Vec<3> > normals;36ARRAY<TATriangle> trigs;3738public:39TriangleApproximation();40int GetNP () const { return points.Size(); }41int GetNT () const { return trigs.Size(); }4243int AddPoint (const Point<3> & p) { points.Append (p); return points.Size()-1; }44int AddNormal (const Vec<3> & n) { normals.Append (n); return normals.Size()-1; }45int AddTriangle (const TATriangle & tri, bool invert = 0);4647const Point<3> & GetPoint (int i) const { return points[i]; }48const TATriangle & GetTriangle (int i) const { return trigs[i]; }49const Vec<3> & GetNormal (int i) const { return normals[i]; }5051void RemoveUnusedPoints ();5253friend class CSGeometry;54};5556#endif575859