Geom Software - C++ Programming and Geometry Libraries
Fade2.5D Documentation pages v1.74
Tools

Functions

bool GEOM_FADE25D::isSimplePolygon (std::vector< Segment2 > &vSegments)
 isSimplePolygon More...
 
Vector2 GEOM_FADE25D::getNormalVector (const Point2 &p0, const Point2 &p1, const Point2 &p2, bool &bOK)
 Get normal vector. More...
 
void GEOM_FADE25D::getDirectedEdges (std::vector< Triangle2 *> &vT, std::vector< Edge2 > &vDirectedEdgesOut)
 Get directed edge The directed edges of vT are returned vDirectedEdgesOut. Directed means that each edge (a,b) with two adjacent triangles in vT is returned twice, as edge(a,b) and edge(b,a).
 
void GEOM_FADE25D::getUndirectedEdges (std::vector< Triangle2 *> &vT, std::vector< Edge2 > &vUndirectedEdgesOut)
 Get undirected edges. More...
 
bool GEOM_FADE25D::fillHole (std::vector< std::pair< Segment2, Vector2 > > vPolygonSegments, bool bWithRefine, bool bVerbose, std::vector< Point2 > &vCornersOut)
 Fill a hole in a 3D mesh with triangles (deprecated) More...
 
bool GEOM_FADE25D::fillHole (std::vector< Point2 > &vMeshCorners, std::vector< Segment2 > &vPolygonSegments, bool bWithRefine, bool bVerbose, std::vector< Point2 > &vCornersOut)
 Fill a hole in a 3D mesh with triangles (deprecated) More...
 
bool GEOM_FADE25D::fillHole (Mesh3 *pMesh, std::vector< Edge2 > &vPolygonEdges, bool bWithRefine, bool bVerbose, std::vector< Point2 > &vCornersOut)
 Fill a hole in a 3D mesh with triangles (deprecated) More...
 
void GEOM_FADE25D::edgesToPolygons (std::vector< Edge2 > &vEdgesIn, std::vector< std::vector< Edge2 > > &vvPolygonsOut, std::vector< Edge2 > &vRemainingOut)
 Create polygons from a set of edges. More...
 
void GEOM_FADE25D::getBorders (const std::vector< Triangle2 *> &vT, std::vector< Segment2 > &vBorderSegmentsOut)
 Get Borders. More...
 
bool GEOM_FADE25D::sortRing (std::vector< Segment2 > &vRing)
 Sort a vector of Segments. More...
 
bool GEOM_FADE25D::sortRingCCW (std::vector< Segment2 > &vRing)
 Sort a vector of Segments. More...
 
Orientation2 GEOM_FADE25D::getOrientation2 (const Point2 *p0, const Point2 *p1, const Point2 *p2)
 Get the orientation of three points. More...
 
Orientation2 GEOM_FADE25D::getOrientation2_mt (const Point2 *p0, const Point2 *p1, const Point2 *p2)
 Get Orientation2 (MT) More...
 

Detailed Description

Function Documentation

◆ edgesToPolygons()

void GEOM_FADE25D::edgesToPolygons ( std::vector< Edge2 > &  vEdgesIn,
std::vector< std::vector< Edge2 > > &  vvPolygonsOut,
std::vector< Edge2 > &  vRemainingOut 
)

A number of methods in Fade returns an unorganized set of edges that delimit a certain area. But sometimes it is more beneficial to have these edges organized as a set of one or more polygons. This is the purpose of the present method.

Parameters
[in]vEdgesInis a vector of oriented edges
[out]vvPolygonsOutcontains one vector<Edge2> for each polygon found in the input data.
[out]vRemainingOutis used to return unusable remaining edges

The present function adds one vector<Edge2> to vvPolygonsOut for each polygon found in vEdgesIn. Each such polygon starts with the leftmost vertex (and when two or more vertices share the smallest x-coordiante then the one of them with the smallest y-coordinate is chosen). Edges that do not form a closed polygon are returned in vRemainingOut.

Note
An Edge2 object represents an edge of a triangle. Triangle corners are always counterclockwise (CCW) oriented. Thus outer polygons are CCW-oriented while hole-polygons are CW-oriented, see the figure.
edges-to-polygons.png
Polygons created by edgesToPolygons

◆ fillHole() [1/3]

bool GEOM_FADE25D::fillHole ( std::vector< std::pair< Segment2, Vector2 > >  vPolygonSegments,
bool  bWithRefine,
bool  bVerbose,
std::vector< Point2 > &  vCornersOut 
)

This function was experimental and is now deprecated because 3D point cloud meshing has been moved to the WOF library.

Parameters
[in]vPolygonSegmentscontains the segments of a closed, simple input polygon along with normal vectors. The segments are counterclockwise oriented and ordered with respect to the surface to be created. Check twice, the orientation is very important. The normal vectors point in the direction of the thought surface at the segment i.e., if a hole is filled, the normal vector of an adjecent triangle is taken but if a T-joint is filled the normal vector should be the average normal of the two triangles at the edge.
[in]bWithRefinespecifies if additional vertices shall be created. (bWithRefine=true is experimental, don't use currently)
[in]bVerbosespecifies if warnings shall be printed to stdout
[out]vCornersOutcontains the created fill triangles, 3 corners per triangle, counterclockwise oriented.

◆ fillHole() [2/3]

bool GEOM_FADE25D::fillHole ( std::vector< Point2 > &  vMeshCorners,
std::vector< Segment2 > &  vPolygonSegments,
bool  bWithRefine,
bool  bVerbose,
std::vector< Point2 > &  vCornersOut 
)

This function was experimental and is now deprecated because 3D point cloud meshing has been moved to the WOF library.

Parameters
[in]vMeshCornersspecifies the input mesh, 3 points per triangle in counterclockwise order.
[in]vPolygonSegmentsare the edges of the closed polygon to be triangulated.
[in]bWithRefinespecifies if additional vertices shall be created (bWithRefine=true is experimental, don't use currently)
[in]bVerbosespecifies if warnings shall be printed to stdout
[out]vCornersOutcontains the created fill triangles, 3 corners per triangle, counterclockwise oriented.

◆ fillHole() [3/3]

bool GEOM_FADE25D::fillHole ( Mesh3 *  pMesh,
std::vector< Edge2 > &  vPolygonEdges,
bool  bWithRefine,
bool  bVerbose,
std::vector< Point2 > &  vCornersOut 
)

This function was experimental and is now deprecated because 3D point cloud meshing has been moved to the WOF library.

Parameters
[in]pMesh
[in]vPolygonEdgesare edges of the polygon to be triangulated. They must form a closed polygon in the mesh.
[in]bWithRefinespecifies if additional vertices shall be created (Note: bWithRefine=true is experimental, don't use currently)
[in]bVerbosespecifies if warnings shall be printed to stdout
[out]vCornersOutcontains the created fill triangles, 3 corners per triangle, counterclockwise oriented.

◆ getBorders()

void GEOM_FADE25D::getBorders ( const std::vector< Triangle2 *> &  vT,
std::vector< Segment2 > &  vBorderSegmentsOut 
)

Computes the border of the triangles in vT. The border consists of all edges having only one adjacent triangle in vT.

Parameters
[in]vTare the input triangles
[out]vBorderSegmentsOutis used to return all border segments

◆ getNormalVector()

Vector2 GEOM_FADE25D::getNormalVector ( const Point2 p0,
const Point2 p1,
const Point2 p2,
bool &  bOK 
)

Returns the normalized normal vector of the triangle defined by the three input points p0, p1, p2.

Parameters
[in]p0,p1,p2When these points are counterclockwise (CCW) oriented then the resulting normal vector points towards the viewer.
[out]bOKreturns true for valid results. When the plane defined by p0, p1, p2 is degenerate, bOK returns false.

◆ getOrientation2()

Orientation2 GEOM_FADE25D::getOrientation2 ( const Point2 p0,
const Point2 p1,
const Point2 p2 
)

This function returns the exact orientation of the points p0, p1, p2 Possible values are
ORIENTATION2_COLLINEAR if p0, p1, p2 are located on a line,
ORIENTATION2_CCW if p0, p1, p2 are counterclockwise oriented
ORIENTATION2_CW if p0, p1, p2 are clockwise oriented
Not thread-safe but a bit faster than the thread-safe version

◆ getOrientation2_mt()

Orientation2 GEOM_FADE25D::getOrientation2_mt ( const Point2 p0,
const Point2 p1,
const Point2 p2 
)
See also
getOrientation2(const Point2* p0,const Point2* p1,const Point2* p2)

This version is thread-safe.

◆ getUndirectedEdges()

void GEOM_FADE25D::getUndirectedEdges ( std::vector< Triangle2 *> &  vT,
std::vector< Edge2 > &  vUndirectedEdgesOut 
)

A unique set of edges of vT is returned.

◆ isSimplePolygon()

bool GEOM_FADE25D::isSimplePolygon ( std::vector< Segment2 > &  vSegments)
Parameters
[in]vSegmentsspecifies segments to be checked. Degenerate segments (0-length) are ignored.
Returns
true when vSegments contains a closed polygon without selfintersections. False otherwise.

◆ sortRing()

bool GEOM_FADE25D::sortRing ( std::vector< Segment2 > &  vRing)

The segments in vRing are reoriented and sorted such that subsequent segments join at the endpoints.

◆ sortRingCCW()

bool GEOM_FADE25D::sortRingCCW ( std::vector< Segment2 > &  vRing)

The segments in vRing are reoriented and sorted such that the resulting polygon is counterclockwise oriented and subsequent segments join at the endpoints.