1 |
foucault |
27 |
//--------------------------------------------------------------------------- |
2 |
|
|
|
3 |
|
|
#ifndef CAD4FE_LocalEdgeCriteriaH |
4 |
|
|
#define CAD4FE_LocalEdgeCriteriaH |
5 |
|
|
|
6 |
|
|
#include "CAD4FE_MCT_Platform.h" |
7 |
|
|
|
8 |
|
|
//--------------------------------------------------------------------------- |
9 |
|
|
class MG_SEGMENT; |
10 |
|
|
class MG_MAILLAGE; |
11 |
|
|
|
12 |
|
|
namespace CAD4FE { |
13 |
|
|
|
14 |
|
|
class MCEdge; |
15 |
|
|
class MCAA; |
16 |
|
|
class Intersection_Plane_MG_MAILLAGE; |
17 |
|
|
|
18 |
|
|
class CAD4FE_MCT_ITEM LocalEdgeCriteria { |
19 |
|
|
public: |
20 |
|
|
LocalEdgeCriteria(MG_SEGMENT *, MCAA * __mcaa, MG_MAILLAGE * __mesh, MG_SEGMENT * __startSeg); |
21 |
|
|
~LocalEdgeCriteria(); |
22 |
|
|
std::string InventorText(); |
23 |
|
|
MG_SEGMENT * GetSegment(); |
24 |
|
|
MCEdge * GetEdge(); |
25 |
|
|
double GetFaceWidth(); |
26 |
|
|
double GetEpsilon(); |
27 |
|
|
double GetDeviationAngle(); |
28 |
|
|
double DeletionScore() const; |
29 |
|
|
double DeletionScore_DeviationAngle() const; |
30 |
|
|
double DeletionScore_FaceWidth() const; |
31 |
|
|
// double DeletionScore_OppositeEdge() const; |
32 |
|
|
// void Set_DeletionScore_OppositeEdge(double); |
33 |
|
|
void GetPolylineVertex(int i, float * __vec3f) const; |
34 |
|
|
unsigned GetPolylineVerticesCount() const; |
35 |
|
|
bool IsTouchingEdge(MCEdge * __mcEdge); |
36 |
|
|
void InitSetOfTouchingEdges(); |
37 |
|
|
bool IsTouchingSegment(MG_SEGMENT * __segment); |
38 |
|
|
bool IsStartSegment(MG_SEGMENT * __segment); |
39 |
|
|
MCEdge * GetTouchingEdge(int); |
40 |
|
|
double GetLengthToTouchingEdge(int); |
41 |
|
|
double GetMeshSize(); |
42 |
|
|
double * GetTouchingEdgePoint(int __index); |
43 |
|
|
MCEdge * GetClosestTouchingEdge(); |
44 |
|
|
double * GetClosestTouchingEdgePoint(); |
45 |
|
|
void Update(bool __reconstructNormalOffset = true); |
46 |
|
|
void CheckMCTess(); |
47 |
|
|
|
48 |
|
|
/** |
49 |
|
|
* time : represent at which step this criterion |
50 |
|
|
* was last updated |
51 |
|
|
*/ |
52 |
|
|
int time; |
53 |
|
|
|
54 |
|
|
private: |
55 |
|
|
MCEdge * _mcEdge; |
56 |
|
|
double _P[3], _N[3]; |
57 |
|
|
MG_SEGMENT * _seg, *_startSeg; |
58 |
|
|
double _meshSize; |
59 |
|
|
Intersection_Plane_MG_MAILLAGE * _normalOffset; |
60 |
|
|
MG_MAILLAGE * _mesh; |
61 |
|
|
MCEdge * _oppositeEdges[2]; |
62 |
|
|
MCAA * _mcaa; |
63 |
|
|
int _oppositeEdgesPolylineIndices[2]; |
64 |
|
|
double _lengthToOppositeEdges[2]; |
65 |
|
|
double _segment[3][3]; |
66 |
|
|
double *_point; |
67 |
|
|
double _faceWidth, _epsilon, _deviationAngle; |
68 |
|
|
std::set <MCEdge *> _setTouchingEdge; |
69 |
|
|
// double _deletionScoreOppositeEdge; |
70 |
|
|
}; |
71 |
|
|
|
72 |
|
|
} |
73 |
|
|
|
74 |
|
|
#endif |
75 |
|
|
|