 libsurf
Programmer's Documentation

TopoEdge Class Reference

Detailed Description

Topological edge, connecting two or more faces.

A topological edge can be the boundary of an isolated face. However, when the full model is a two-manifold, then each edge must have exactly two adjacent faces.

TopoFace, TopoVertex, Topology

#include <topoedge.h>

Collaboration diagram for TopoEdge:
[legend]

Public Types

enum  MatchResult {
NoMatch, ForwardFit, ReverseFit, ForwardOverlap,
ReverseOverlap
}

enum  Origin { Unknown, Specified, Intersection }

Public Member Functions

TopoEdge ()
create empty edge

TopoEdge (uint a, uint b)
create edge between existing vertices, not attached yet

TopoEdge (const Topology &topo, uint iface, uint a, uint b)
initialize boundary edge with vertex indices

void assign (uint a, uint b)
assign vertices

int edgeOrigin () const
determine how edge was created

void edgeOrigin (Origin flag)
change origin flag

uint source () const
access source vertex

uint target () const
access target vertex

bool operator< (const TopoEdge &e) const
compare edges

bool operator== (const TopoEdge &e) const
edge equality

Vct3 eval (uint lfi, Real t) const
evaluate curve underlying this edge

int compare (const Topology &topo, const TopoEdge &e, Real tol=gmepsilon) const
compare geometry with another edge

bool circular () const
a circular edge starts and ends at the same vertex

uint nfaces () const
number of connected faces

uint face (uint i) const
access face i

uint & face (uint i)
access face i

AbstractUvCurvePtr curve (uint k) const
access curve with local index k

uint findFace (uint fix) const
return local index of face i

uint attachFace (uint fix, AbstractUvCurvePtr pcv)
connect with curve cv on face fix

bool detachFace (uint gfi)
drop face with global index fix from connectivity

void detach ()
detach edge from all faces

int connects (uint gfi, const Vct2 &q1, const Vct2 &q2, Real tol=gmepsilon) const
check whether this edge connects two points on global face gfi

void split (Real t, uint v, TopoEdge &other)
split edge by inserting vertex v, make this the edge (a,v) and other (v,b)

void enforcePoint (Real t)
enforce a point to be present in discretization

const Vector & discretize (const Topology &topo)
discretize while satisfying mesh refinement criteria on all faces

const Vector & discretize (const DcMeshCritBase &mcrit)
discretize using simple criteria on first face

void discretize (const Vector &t)
enforce discretization

const Vector & pattern () const
access discretization pattern

bool injectPoint (uint kf, const Vct2 &p, Real tol=gmepsilon)
change discretization to include point p

void injectIntersections (const Topology &topo, TopoEdge &e)
make compatible with another edge - inject intersections

bool pointInjected () const
determine whether a point was injected into edge after discretization

void pointInjected (bool flag)
reset injection status

uint npoints () const
number of points on discretized edge

Vct2 uvpoint (uint kface, uint ipoint) const
retrieve discrete points in (u,v) space of face k

Vct3 point (uint ipoint) const
retrieve discrete point in 3D space

void toMx (MxMesh &mx) const
generate lines for debugging

void print (uint k, std::ostream &os) const
plain text output for debugging

void tabulate (const std::string &fn) const
write plain text table for debugging

Static Public Member Functions

static AbstractUvCurvePtr boundaryCurve (const Topology &topo, uint iface, uint a, uint b)
create default curve, straight in parameter space

static bool intersects (uint fix, const TopoEdge &ea, const TopoEdge &eb, Vct2 &t)
test two edges for intersection in space of face index fix

Private Member Functions

void inject (const Topology &topo, uint iface, const Vector &ti)
inject a set of parameter values

Private Attributes

AbstractUvCurveArray m_pcv
continuous geometry representation in parameter space

Vector m_tp
discretization in curve parameter space

Vector m_ftp
curve parameter points enforced in discretization

Indices m_faces
faces connected to this edge

uint m_vix 
vertex indices

Origin m_orig
tag which indicates how this edge was created

bool m_bInjected
flag indicating whether point was inserted on edge

The documentation for this class was generated from the following files:
Generated on Wed Jan 19 2022 03:03:19 for libsurf by 1.8.5