Path: blob/devel/ElmerGUI/netgen/libsrc/csg/triapprox.cpp
3206 views
#include <mystdlib.h>1#include <myadt.hpp>23#include <linalg.hpp>4#include <csg.hpp>567namespace netgen8{910TriangleApproximation :: TriangleApproximation ()11{12;13}1415int TriangleApproximation ::16AddTriangle (const TATriangle & tri, bool invert)17{18trigs.Append (tri);19if (invert)20{21trigs.Last()[1] = tri[2];22trigs.Last()[2] = tri[1];23}24return trigs.Size()-1;25}262728void TriangleApproximation :: RemoveUnusedPoints ()29{30BitArray used(GetNP());31ARRAY<int> map (GetNP());32int i, j;33int cnt = 0;3435used.Clear();36for (i = 0; i < GetNT(); i++)37for (j = 0; j < 3; j++)38used.Set (GetTriangle (i)[j]);3940for (i = 0; i < GetNP(); i++)41if (used.Test(i))42map[i] = cnt++;4344for (i = 0; i < GetNT(); i++)45for (j = 0; j < 3; j++)46trigs[i][j] = map[trigs[i][j]];4748for (i = 0; i < GetNP(); i++)49if (used.Test(i))50{51points[map[i]] = points[i];52normals[map[i]] = normals[i];53}5455points.SetSize (cnt);56normals.SetSize (cnt);57}58}596061