mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-27 21:30:35 +05:00
STLPointId
This commit is contained in:
parent
61c9e669c3
commit
f22cb48832
@ -488,7 +488,7 @@ void STLTriangle :: ProjectInPlain(const Array<Point<3>,STLPointId>& ap,
|
|||||||
pp = pp + (nfact) * nt;
|
pp = pp + (nfact) * nt;
|
||||||
}
|
}
|
||||||
|
|
||||||
int STLTriangle :: PointInside(const Array<Point<3>,STLPointId> & ap,
|
bool STLTriangle :: PointInside(const Array<Point<3>,STLPointId> & ap,
|
||||||
const Point<3> & pp) const
|
const Point<3> & pp) const
|
||||||
{
|
{
|
||||||
const Point<3> & p1 = ap[PNum(1)];
|
const Point<3> & p1 = ap[PNum(1)];
|
||||||
@ -560,14 +560,12 @@ double STLTriangle :: GetNearestPoint(const Array<Point<3>,STLPointId>& ap,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int STLTriangle :: HasEdge(int p1, int p2) const
|
bool STLTriangle :: HasEdge(STLPointId p1, STLPointId p2) const
|
||||||
{
|
{
|
||||||
int i;
|
for (int i = 1; i <= 3; i++)
|
||||||
for (i = 1; i <= 3; i++)
|
if (p1 == PNum(i) && p2 == PNumMod(i+1))
|
||||||
{
|
return true;
|
||||||
if (p1 == PNum(i) && p2 == PNumMod(i+1)) {return 1;}
|
return false;
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ostream& operator<<(ostream& os, const STLTriangle& t)
|
ostream& operator<<(ostream& os, const STLTriangle& t)
|
||||||
@ -590,7 +588,7 @@ STLTopEdge :: STLTopEdge ()
|
|||||||
status = ED_UNDEFINED;
|
status = ED_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
STLTopEdge :: STLTopEdge (int p1, int p2, int trig1, int trig2)
|
STLTopEdge :: STLTopEdge (STLPointId p1, STLPointId p2, int trig1, int trig2)
|
||||||
{
|
{
|
||||||
pts[0] = p1;
|
pts[0] = p1;
|
||||||
pts[1] = p2;
|
pts[1] = p2;
|
||||||
|
@ -711,7 +711,8 @@ void STLTopology :: FindNeighbourTrigs()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (STLTrigId ti = 0; ti < GetNT(); ti++)
|
// for (STLTrigId ti = 0; ti < GetNT(); ti++)
|
||||||
|
for (STLTrigId ti : Range(trias))
|
||||||
{
|
{
|
||||||
STLTriangle & trig = trias[ti];
|
STLTriangle & trig = trias[ti];
|
||||||
for (int k = 0; k < 3; k++)
|
for (int k = 0; k < 3; k++)
|
||||||
|
@ -28,9 +28,10 @@ public:
|
|||||||
constexpr STLPointId (int ai) : i(ai) { ; }
|
constexpr STLPointId (int ai) : i(ai) { ; }
|
||||||
STLPointId & operator= (const STLPointId & ai) { i = ai.i; return *this; }
|
STLPointId & operator= (const STLPointId & ai) { i = ai.i; return *this; }
|
||||||
STLPointId & operator= (int ai) { i = ai; return *this; }
|
STLPointId & operator= (int ai) { i = ai; return *this; }
|
||||||
operator int () const { return i; }
|
constexpr operator int () const { return i; }
|
||||||
STLPointId operator++ (int) { return i++; }
|
STLPointId operator++ (int) { return i++; }
|
||||||
STLPointId operator-- (int) { return i--; }
|
STLPointId operator-- (int) { return i--; }
|
||||||
|
STLPointId & operator++ () { i++; return *this; }
|
||||||
|
|
||||||
void DoArchive(Archive& ar) { ar & i; }
|
void DoArchive(Archive& ar) { ar & i; }
|
||||||
};
|
};
|
||||||
@ -45,9 +46,11 @@ public:
|
|||||||
constexpr STLTrigId (int ai) : i(ai) { ; }
|
constexpr STLTrigId (int ai) : i(ai) { ; }
|
||||||
STLTrigId & operator= (const STLTrigId & ai) { i = ai.i; return *this; }
|
STLTrigId & operator= (const STLTrigId & ai) { i = ai.i; return *this; }
|
||||||
STLTrigId & operator= (int ai) { i = ai; return *this; }
|
STLTrigId & operator= (int ai) { i = ai; return *this; }
|
||||||
operator int () const { return i; }
|
constexpr operator int () const { return i; }
|
||||||
STLTrigId operator++ (int) { return i++; }
|
STLTrigId operator++ (int) { return i++; }
|
||||||
STLTrigId operator-- (int) { return i--; }
|
STLTrigId operator-- (int) { return i--; }
|
||||||
|
STLTrigId & operator++ () { i++; return *this; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -199,7 +202,7 @@ public:
|
|||||||
const Vec<3> & nproj,
|
const Vec<3> & nproj,
|
||||||
Point<3> & pp, Vec<3> & lam) const;
|
Point<3> & pp, Vec<3> & lam) const;
|
||||||
|
|
||||||
int PointInside(const Array<Point<3>,STLPointId>& ap, const Point<3> & pp) const;
|
bool PointInside(const Array<Point<3>,STLPointId>& ap, const Point<3> & pp) const;
|
||||||
|
|
||||||
//get nearest point on triangle and distance to it
|
//get nearest point on triangle and distance to it
|
||||||
double GetNearestPoint(const Array<Point<3>,STLPointId>& ap,
|
double GetNearestPoint(const Array<Point<3>,STLPointId>& ap,
|
||||||
@ -214,7 +217,7 @@ public:
|
|||||||
int GetFaceNum() {return facenum;}
|
int GetFaceNum() {return facenum;}
|
||||||
void SetFaceNum(int i) {facenum = i;}
|
void SetFaceNum(int i) {facenum = i;}
|
||||||
|
|
||||||
int HasEdge(int p1, int p2) const;
|
bool HasEdge(STLPointId p1, STLPointId p2) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -225,22 +228,22 @@ public:
|
|||||||
*/
|
*/
|
||||||
class STLTopEdge
|
class STLTopEdge
|
||||||
{
|
{
|
||||||
int pts[2];
|
STLPointId pts[2];
|
||||||
int trigs[2];
|
int trigs[2];
|
||||||
double cosangle;
|
double cosangle;
|
||||||
int status; // excluded, confirmed, candidate, undefined
|
int status; // excluded, confirmed, candidate, undefined
|
||||||
public:
|
public:
|
||||||
STLTopEdge ();
|
STLTopEdge ();
|
||||||
STLTopEdge (int p1, int p2, int trig1, int trig2);
|
STLTopEdge (STLPointId p1, STLPointId p2, int trig1, int trig2);
|
||||||
|
|
||||||
int operator[] (int i) const { return pts[i]; }
|
STLPointId operator[] (int i) const { return pts[i]; }
|
||||||
int & operator[] (int i) { return pts[i]; }
|
STLPointId & operator[] (int i) { return pts[i]; }
|
||||||
|
|
||||||
|
|
||||||
int PNum(int i) const { return pts[(i-1)]; }
|
STLPointId PNum(int i) const { return pts[(i-1)]; }
|
||||||
int & PNum(int i) { return pts[(i-1)]; }
|
STLPointId & PNum(int i) { return pts[(i-1)]; }
|
||||||
int PNumMod(int i) const { return pts[(i-1)%2]; }
|
STLPointId PNumMod(int i) const { return pts[(i-1)%2]; }
|
||||||
int & PNumMod(int i) { return pts[(i-1)%2]; }
|
STLPointId & PNumMod(int i) { return pts[(i-1)%2]; }
|
||||||
|
|
||||||
int TrigNum(int i) const { return trigs[(i-1)]; }
|
int TrigNum(int i) const { return trigs[(i-1)]; }
|
||||||
int & TrigNum(int i) { return trigs[(i-1)]; }
|
int & TrigNum(int i) { return trigs[(i-1)]; }
|
||||||
@ -275,7 +278,7 @@ protected:
|
|||||||
// mapping of sorted pair of points to topedge
|
// mapping of sorted pair of points to topedge
|
||||||
INDEX_2_HASHTABLE<int> * ht_topedges;
|
INDEX_2_HASHTABLE<int> * ht_topedges;
|
||||||
// mapping of node to trigs
|
// mapping of node to trigs
|
||||||
TABLE<int> trigsperpoint;
|
TABLE<int, IndexBASE<STLPointId>()> trigsperpoint;
|
||||||
// mapping of node to edges
|
// mapping of node to edges
|
||||||
TABLE<int> topedgesperpoint;
|
TABLE<int> topedgesperpoint;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user