gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
6 #ifndef MESH_GFACE_DELAUNAY_INSERTIONFACE_H
7 #define MESH_GFACE_DELAUNAY_INSERTIONFACE_H
34 int index =
Us.size();
66 std::map<MVertex *, SPoint2> *p =
nullptr)
74 double *p4,
double *metric);
94 if(!n)
return nullptr;
97 for(
int j = 0; j < 3; j++)
111 const double p[2] = {x, y};
122 for(
int i = 0; i < 3; i++)
128 for(
int i = 0; i < 3; i++)
129 if(
neigh[i] == t)
return true;
150 GFace *gf,
int MAXPNT = 1000000000,
151 std::map<MVertex *, MVertex *> *equivalence =
nullptr,
154 GFace *gf, std::map<MVertex *, MVertex *> *equivalence =
nullptr,
156 std::vector<SPoint2> *true_boundary =
nullptr);
158 GFace *gf,
bool quad, std::map<MVertex *, MVertex *> *equivalence =
nullptr,
161 GFace *gf, std::map<MVertex *, MVertex *> *equivalence =
nullptr,
164 GFace *gf,
const std::set<MVertex *> &constr_vertices,
165 std::map<MVertex *, MVertex *> *equivalence =
nullptr,
168 GFace *gf,
bool crossFieldClosestPoint =
false,
169 std::map<MVertex *, MVertex *> *equivalence =
nullptr,
173 bool removeBox =
true,
174 std::vector<MEdge> *edgesToRecover =
nullptr,
175 bool hilbertSort =
true);
186 if(
v[0]->getNum() >
v[1]->getNum()) {
196 if(
_v(0)->getNum() < other.
_v(0)->
getNum())
return true;
197 if(
_v(0)->getNum() > other.
_v(0)->
getNum())
return false;
198 if(
_v(1)->getNum() < other.
_v(1)->
getNum())
return true;
203 if(
_v(0)->getNum() == other.
_v(0)->
getNum() &&
bool operator()(const MTri3 *a, const MTri3 *b) const
static void parametricCoordinates(MElement *t, GFace *gf, double u[4], double v[4], MVertex *close=nullptr)
virtual MFace getFace(int num) const
void buildMetric(GFace *gf, double *uv, double *metric)
std::map< MVertex *, SPoint2 > * parametricCoordinates
bool isNeigh(const MTri3 *t) const
int inCircumCircleAniso(GFace *gf, double *p1, double *p2, double *p3, double *p4, double *metric)
void bowyerWatsonParallelogramsConstrained(GFace *gf, const std::set< MVertex * > &constr_vertices, std::map< MVertex *, MVertex * > *equivalence=nullptr, std::map< MVertex *, SPoint2 > *parametricCoordinates=nullptr)
std::map< MVertex *, MVertex * > * equivalence
void addVertex(MVertex *mv, double u, double v, double size, double sizeBGM)
std::size_t getNum() const
virtual MVertex * getVertex(int num)
void connectTriangles(std::list< MTri3 * > &)
MTri3(MTriangle *t, double lc, SMetric3 *m=nullptr, bidimMeshData *data=nullptr, GFace *gf=nullptr)
void bowyerWatsonFrontalLayers(GFace *gf, bool quad, std::map< MVertex *, MVertex * > *equivalence=nullptr, std::map< MVertex *, SPoint2 > *parametricCoordinates=nullptr)
MTri3 * getNeigh(int iN) const
void bowyerWatsonParallelograms(GFace *gf, std::map< MVertex *, MVertex * > *equivalence=nullptr, std::map< MVertex *, SPoint2 > *parametricCoordinates=nullptr)
void bowyerWatson(GFace *gf, int MAXPNT=1000000000, std::map< MVertex *, MVertex * > *equivalence=nullptr, std::map< MVertex *, SPoint2 > *parametricCoordinates=nullptr)
MVertex * otherSide(int i)
void setIndex(long int index)
static int radiusNorm
2 is euclidian norm, -1 is infinite norm , 3 quality
void setTri(MTriangle *t)
int inCircumCircle(double x, double y) const
void forceRadius(double r)
void delaunayMeshIn2D(std::vector< MVertex * > &, std::vector< MTriangle * > &, bool removeBox=true, std::vector< MEdge > *edgesToRecover=nullptr, bool hilbertSort=true)
bidimMeshData(std::map< MVertex *, MVertex * > *e=nullptr, std::map< MVertex *, SPoint2 > *p=nullptr)
std::set< MEdge, MEdgeLessThan > internalEdges
bool operator<(const edgeXface &other) const
int getIndex(MVertex *mv)
int inCircumCircle(const double *p) const
edgeXface(MTri3 *_t, int iFac)
MVertex * _v(int i) const
void bowyerWatsonFrontal(GFace *gf, std::map< MVertex *, MVertex * > *equivalence=nullptr, std::map< MVertex *, SPoint2 > *parametricCoordinates=nullptr, std::vector< SPoint2 > *true_boundary=nullptr)
std::vector< SMetric3 > vMetricsBGM
MVertex * equivalent(MVertex *v1) const
long int getIndex() const
int inCircumCircle(const MVertex *v) const
bool operator==(const edgeXface &other) const
void setNeigh(int iN, MTri3 *n)
std::vector< double > vSizesBGM
std::vector< double > vSizes
void buildBackgroundMesh(GFace *gf, bool crossFieldClosestPoint=false, std::map< MVertex *, MVertex * > *equivalence=nullptr, std::map< MVertex *, SPoint2 > *parametricCoordinates=nullptr)
std::map< MVertex *, int > indices