gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
DocRecord Class Reference

#include <DivideAndConquer.h>

Collaboration diagram for DocRecord:

Public Member Functions

 DocRecord (int n)
 
double & x (int i)
 
double & y (int i)
 
void *& data (int i)
 
void setPoints (fullMatrix< double > *p)
 
 ~DocRecord ()
 
void MakeMeshWithPoints ()
 
void Voronoi ()
 
int hullSize ()
 
int onHull (PointNumero i)
 
void makePosView (const std::string &, GFace *gf=nullptr)
 
void printMedialAxis (Octree *_octree, const std::string &, GFace *gf=nullptr, GEdge *ge=nullptr)
 
void voronoiCell (PointNumero pt, std::vector< SPoint2 > &pts) const
 
void addBoundaryEdge (void *p1, void *p2)
 
bool lookForBoundaryEdge (void *p1, void *p2)
 
void recur_tag_triangles (int, std::set< int > &, std::map< std::pair< void *, void * >, std::pair< int, int > > &)
 
std::set< int > tagInterior (double, double)
 
void concave (double, double, GFace *)
 
bool contain (int, int, int)
 
void add (int, int)
 
void initialize ()
 
bool remove_point (int)
 
void remove_all ()
 
void add_point (double, double, GFace *)
 
void add_edge (void *p1, void *p2)
 
bool find_edge (void *p1, void *p2)
 
void build_edges ()
 
void clear_edges ()
 
bool delaunay_conformity (GFace *)
 
PointNumeroConvertDlistToArray (DListPeek *dlist, int *n)
 

Public Attributes

STriangle_adjacencies
 
int numPoints
 
int size_points
 
PointRecordpoints
 
int numTriangles
 
Triangletriangles
 
std::set< std::pair< void *, void * > > boundaryEdges
 
std::set< std::pair< void *, void * > > mesh_edges
 

Private Member Functions

PointNumero Predecessor (PointNumero a, PointNumero b)
 
PointNumero Successor (PointNumero a, PointNumero b)
 
int FixFirst (PointNumero x, PointNumero f)
 
PointNumero First (PointNumero x)
 
int IsLeftOf (PointNumero x, PointNumero y, PointNumero check)
 
int IsRightOf (PointNumero x, PointNumero y, PointNumero check)
 
Segment LowerCommonTangent (DT vl, DT vr)
 
Segment UpperCommonTangent (DT vl, DT vr)
 
int Qtest (PointNumero h, PointNumero i, PointNumero j, PointNumero k)
 
int Merge (DT vl, DT vr)
 
DT RecurTrig (PointNumero left, PointNumero right)
 
int DListInsert (PointNumero centerPoint, PointNumero newPoint)
 
int Insert (PointNumero a, PointNumero b)
 
int DListDelete (DListPeek *dlist, PointNumero oldPoint)
 
int Delete (PointNumero a, PointNumero b)
 
void ConvertDListToVoronoiData ()
 
int ConvertDListToTriangles ()
 
void RemoveAllDList ()
 
int BuildDelaunay ()
 
int CountPointsOnHull ()
 
void ConvexHull ()
 
bool AdjacentNullptrExists ()
 

Private Attributes

int _hullSize
 
PointNumero_hull
 

Detailed Description

Definition at line 64 of file DivideAndConquer.h.

Constructor & Destructor Documentation

◆ DocRecord()

DocRecord::DocRecord ( int  n)

Definition at line 829 of file DivideAndConquer.cpp.

◆ ~DocRecord()

DocRecord::~DocRecord ( )

Definition at line 836 of file DivideAndConquer.cpp.

Member Function Documentation

◆ add()

void DocRecord::add ( int  index1,
int  index2 
)

Definition at line 1017 of file DivideAndConquer.cpp.

Referenced by concave().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_edge()

void DocRecord::add_edge ( void *  p1,
void *  p2 
)
inline

Definition at line 147 of file DivideAndConquer.h.

Referenced by build_edges().

Here is the caller graph for this function:

◆ add_point()

void DocRecord::add_point ( double  x,
double  y,
GFace face 
)

Definition at line 1062 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ addBoundaryEdge()

void DocRecord::addBoundaryEdge ( void *  p1,
void *  p2 
)
inline

Definition at line 118 of file DivideAndConquer.h.

Referenced by concave().

Here is the caller graph for this function:

◆ AdjacentNullptrExists()

bool DocRecord::AdjacentNullptrExists ( )
private

Definition at line 847 of file DivideAndConquer.cpp.

Referenced by MakeMeshWithPoints().

Here is the caller graph for this function:

◆ build_edges()

void DocRecord::build_edges ( )

Definition at line 1072 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ BuildDelaunay()

int DocRecord::BuildDelaunay ( )
private

Definition at line 310 of file DivideAndConquer.cpp.

Referenced by MakeMeshWithPoints(), and Voronoi().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clear_edges()

void DocRecord::clear_edges ( )

Definition at line 1085 of file DivideAndConquer.cpp.

◆ concave()

void DocRecord::concave ( double  x,
double  y,
GFace gf 
)

Definition at line 953 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ contain()

bool DocRecord::contain ( int  index1,
int  index2,
int  index3 
)

Definition at line 998 of file DivideAndConquer.cpp.

◆ ConvertDlistToArray()

PointNumero * DocRecord::ConvertDlistToArray ( DListPeek dlist,
int *  n 
)

Definition at line 488 of file DivideAndConquer.cpp.

Referenced by ConvertDListToTriangles(), and ConvertDListToVoronoiData().

Here is the caller graph for this function:

◆ ConvertDListToTriangles()

int DocRecord::ConvertDListToTriangles ( )
private

Definition at line 762 of file DivideAndConquer.cpp.

Referenced by MakeMeshWithPoints().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConvertDListToVoronoiData()

void DocRecord::ConvertDListToVoronoiData ( )
private

Definition at line 515 of file DivideAndConquer.cpp.

Referenced by Voronoi().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConvexHull()

void DocRecord::ConvexHull ( )
private

Definition at line 471 of file DivideAndConquer.cpp.

Referenced by ConvertDListToVoronoiData().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CountPointsOnHull()

int DocRecord::CountPointsOnHull ( )
private

Definition at line 452 of file DivideAndConquer.cpp.

Referenced by ConvertDListToTriangles(), and ConvertDListToVoronoiData().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ data()

void*& DocRecord::data ( int  i)
inline

Definition at line 101 of file DivideAndConquer.h.

Referenced by add(), build_edges(), recur_tag_triangles(), setPoints(), and tagInterior().

Here is the caller graph for this function:

◆ delaunay_conformity()

bool DocRecord::delaunay_conformity ( GFace gf)

Definition at line 1087 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ Delete()

int DocRecord::Delete ( PointNumero  a,
PointNumero  b 
)
private

Definition at line 444 of file DivideAndConquer.cpp.

Referenced by Merge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DListDelete()

int DocRecord::DListDelete ( DListPeek dlist,
PointNumero  oldPoint 
)
private

Definition at line 413 of file DivideAndConquer.cpp.

Referenced by Delete().

Here is the caller graph for this function:

◆ DListInsert()

int DocRecord::DListInsert ( PointNumero  centerPoint,
PointNumero  newPoint 
)
private

Definition at line 319 of file DivideAndConquer.cpp.

Referenced by Insert().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_edge()

bool DocRecord::find_edge ( void *  p1,
void *  p2 
)
inline

Definition at line 153 of file DivideAndConquer.h.

Referenced by delaunay_conformity().

Here is the caller graph for this function:

◆ First()

PointNumero DocRecord::First ( PointNumero  x)
private

Definition at line 77 of file DivideAndConquer.cpp.

Referenced by ConvexHull(), CountPointsOnHull(), LowerCommonTangent(), and UpperCommonTangent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FixFirst()

int DocRecord::FixFirst ( PointNumero  x,
PointNumero  f 
)
private

Definition at line 59 of file DivideAndConquer.cpp.

Referenced by Merge(), and RecurTrig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hullSize()

int DocRecord::hullSize ( )
inline

Definition at line 106 of file DivideAndConquer.h.

◆ initialize()

void DocRecord::initialize ( )

Definition at line 1024 of file DivideAndConquer.cpp.

◆ Insert()

int DocRecord::Insert ( PointNumero  a,
PointNumero  b 
)
private

Definition at line 406 of file DivideAndConquer.cpp.

Referenced by Merge(), and RecurTrig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsLeftOf()

int DocRecord::IsLeftOf ( PointNumero  x,
PointNumero  y,
PointNumero  check 
)
private

Definition at line 82 of file DivideAndConquer.cpp.

Referenced by IsRightOf(), Merge(), and UpperCommonTangent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsRightOf()

int DocRecord::IsRightOf ( PointNumero  x,
PointNumero  y,
PointNumero  check 
)
private

Definition at line 94 of file DivideAndConquer.cpp.

Referenced by ConvertDListToTriangles(), DListInsert(), LowerCommonTangent(), makePosView(), Merge(), and RecurTrig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lookForBoundaryEdge()

bool DocRecord::lookForBoundaryEdge ( void *  p1,
void *  p2 
)
inline

Definition at line 124 of file DivideAndConquer.h.

Referenced by recur_tag_triangles().

Here is the caller graph for this function:

◆ LowerCommonTangent()

Segment DocRecord::LowerCommonTangent ( DT  vl,
DT  vr 
)
private

Definition at line 99 of file DivideAndConquer.cpp.

Referenced by Merge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MakeMeshWithPoints()

void DocRecord::MakeMeshWithPoints ( )

Definition at line 855 of file DivideAndConquer.cpp.

Referenced by SOrientedBoundingBox::buildOBB(), concave(), meshGenerator(), and meshGeneratorPeriodic().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ makePosView()

void DocRecord::makePosView ( const std::string &  fileName,
GFace gf = nullptr 
)

Definition at line 572 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ Merge()

int DocRecord::Merge ( DT  vl,
DT  vr 
)
private

Definition at line 178 of file DivideAndConquer.cpp.

Referenced by RecurTrig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onHull()

int DocRecord::onHull ( PointNumero  i)
inline

Definition at line 107 of file DivideAndConquer.h.

Referenced by makePosView(), and printMedialAxis().

Here is the caller graph for this function:

◆ Predecessor()

PointNumero DocRecord::Predecessor ( PointNumero  a,
PointNumero  b 
)
private

Definition at line 33 of file DivideAndConquer.cpp.

Referenced by LowerCommonTangent(), Merge(), and UpperCommonTangent().

Here is the caller graph for this function:

◆ printMedialAxis()

void DocRecord::printMedialAxis ( Octree _octree,
const std::string &  fileName,
GFace gf = nullptr,
GEdge ge = nullptr 
)

Definition at line 639 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ Qtest()

int DocRecord::Qtest ( PointNumero  h,
PointNumero  i,
PointNumero  j,
PointNumero  k 
)
private

Definition at line 158 of file DivideAndConquer.cpp.

Referenced by Merge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ recur_tag_triangles()

void DocRecord::recur_tag_triangles ( int  iTriangle,
std::set< int > &  taggedTriangles,
std::map< std::pair< void *, void * >, std::pair< int, int > > &  edgesToTriangles 
)

Definition at line 886 of file DivideAndConquer.cpp.

Referenced by tagInterior().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecurTrig()

DT DocRecord::RecurTrig ( PointNumero  left,
PointNumero  right 
)
private

Definition at line 253 of file DivideAndConquer.cpp.

Referenced by BuildDelaunay().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ remove_all()

void DocRecord::remove_all ( )

Definition at line 1039 of file DivideAndConquer.cpp.

◆ remove_point()

bool DocRecord::remove_point ( int  index)

Definition at line 1029 of file DivideAndConquer.cpp.

◆ RemoveAllDList()

void DocRecord::RemoveAllDList ( )
private

Definition at line 812 of file DivideAndConquer.cpp.

Referenced by MakeMeshWithPoints().

Here is the caller graph for this function:

◆ setPoints()

void DocRecord::setPoints ( fullMatrix< double > *  p)

Definition at line 875 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ Successor()

PointNumero DocRecord::Successor ( PointNumero  a,
PointNumero  b 
)
private

Definition at line 46 of file DivideAndConquer.cpp.

Referenced by ConvexHull(), CountPointsOnHull(), LowerCommonTangent(), Merge(), and UpperCommonTangent().

Here is the caller graph for this function:

◆ tagInterior()

std::set< int > DocRecord::tagInterior ( double  x,
double  y 
)

Definition at line 913 of file DivideAndConquer.cpp.

Referenced by concave().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpperCommonTangent()

Segment DocRecord::UpperCommonTangent ( DT  vl,
DT  vr 
)
private

Definition at line 128 of file DivideAndConquer.cpp.

Referenced by Merge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Voronoi()

void DocRecord::Voronoi ( )

Definition at line 868 of file DivideAndConquer.cpp.

Here is the call graph for this function:

◆ voronoiCell()

void DocRecord::voronoiCell ( PointNumero  pt,
std::vector< SPoint2 > &  pts 
) const

Definition at line 534 of file DivideAndConquer.cpp.

Referenced by makePosView(), and printMedialAxis().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ x()

double& DocRecord::x ( int  i)
inline

Definition at line 99 of file DivideAndConquer.h.

Referenced by add_point(), concave(), First(), FixFirst(), IsLeftOf(), IsRightOf(), LowerCommonTangent(), printMedialAxis(), setPoints(), tagInterior(), and UpperCommonTangent().

Here is the caller graph for this function:

◆ y()

double& DocRecord::y ( int  i)
inline

Definition at line 100 of file DivideAndConquer.h.

Referenced by add_point(), concave(), IsLeftOf(), IsRightOf(), LowerCommonTangent(), printMedialAxis(), setPoints(), tagInterior(), and UpperCommonTangent().

Here is the caller graph for this function:

Member Data Documentation

◆ _adjacencies

STriangle* DocRecord::_adjacencies

◆ _hull

PointNumero* DocRecord::_hull
private

Definition at line 67 of file DivideAndConquer.h.

Referenced by ConvertDListToVoronoiData(), ConvexHull(), onHull(), and ~DocRecord().

◆ _hullSize

int DocRecord::_hullSize
private

Definition at line 66 of file DivideAndConquer.h.

Referenced by ConvertDListToVoronoiData(), hullSize(), and onHull().

◆ boundaryEdges

std::set<std::pair<void *, void *> > DocRecord::boundaryEdges

Definition at line 116 of file DivideAndConquer.h.

Referenced by addBoundaryEdge(), and lookForBoundaryEdge().

◆ mesh_edges

std::set<std::pair<void *, void *> > DocRecord::mesh_edges

Definition at line 145 of file DivideAndConquer.h.

Referenced by add_edge(), clear_edges(), and find_edge().

◆ numPoints

◆ numTriangles

int DocRecord::numTriangles

◆ points

◆ size_points

int DocRecord::size_points

Definition at line 94 of file DivideAndConquer.h.

◆ triangles


The documentation for this class was generated from the following files: