MeshLib Java Docs
Loading...
Searching...
No Matches
meshlib.PolylineTopology Class Reference
Inheritance diagram for meshlib.PolylineTopology:

Public Member Functions

 PolylineTopology (java.lang.foreign.MemorySegment ptr, boolean owned, java.lang.Object owner)
 PolylineTopology ()
 PolylineTopology (meshlib.PolylineTopology _other)
meshlib.PolylineTopology assignFromAnother (meshlib.PolylineTopology _other)
void buildOpenLines (meshlib.std_vector_MR_VertId comp2firstVert)
meshlib.EdgeId makeEdge ()
meshlib.EdgeId makeEdge (meshlib.VertId a, meshlib.VertId b, meshlib.EdgeId e)
int makeEdges (meshlib.Edges edges)
boolean isLoneEdge (meshlib.EdgeId a)
meshlib.UndirectedEdgeId lastNotLoneUndirectedEdge ()
meshlib.EdgeId lastNotLoneEdge ()
long edgeSize ()
long edgeCapacity ()
long undirectedEdgeSize ()
long undirectedEdgeCapacity ()
long computeNotLoneUndirectedEdges ()
void edgeReserve (long newCapacity)
boolean hasEdge (meshlib.EdgeId e)
void deleteEdge (meshlib.UndirectedEdgeId ue)
void deleteEdges (meshlib.UndirectedEdgeBitSet es)
long heapBytes ()
void splice (meshlib.EdgeId a, meshlib.EdgeId b)
meshlib.EdgeId next (meshlib.EdgeId he)
meshlib.VertId org (meshlib.EdgeId he)
meshlib.VertId dest (meshlib.EdgeId he)
void setOrg (meshlib.EdgeId a, meshlib.VertId v)
meshlib.Vector_MR_EdgeId_MR_VertId edgePerVertex ()
meshlib.Vector_MR_VertId_MR_EdgeId getOrgs ()
meshlib.EdgeId edgeWithOrg (meshlib.VertId a)
boolean hasVert (meshlib.VertId a)
int getVertDegree (meshlib.VertId a)
int numValidVerts ()
meshlib.VertId lastValidVert ()
meshlib.VertId addVertId ()
void vertResize (long newSize)
void vertResizeWithReserve (long newSize)
void vertReserve (long newCapacity)
long vertSize ()
long vertCapacity ()
meshlib.VertBitSet getValidVerts ()
meshlib.VertBitSet getVertIds (meshlib.VertBitSet region)
meshlib.EdgeId findEdge (meshlib.VertId o, meshlib.VertId d)
meshlib.VertBitSet getPathVertices (meshlib.std_vector_MR_EdgeId path)
meshlib.EdgeId splitEdge (meshlib.EdgeId e)
meshlib.EdgeId makePolyline (meshlib.VertId vs, long num)
void addPart (meshlib.PolylineTopology from, meshlib.VertMap outVmap, meshlib.WholeEdgeMap outEmap)
void addPartByMask (meshlib.PolylineTopology from, meshlib.UndirectedEdgeBitSet mask, meshlib.VertMap outVmap, meshlib.EdgeMap outEmap)
void pack (meshlib.VertMap outVmap, meshlib.WholeEdgeMap outEmap)
void write (meshlib.std_ostream s)
boolean read (meshlib.std_istream s)
boolean opEqual (meshlib.PolylineTopology b)
boolean opNotEqual (meshlib.PolylineTopology b)
boolean isConsistentlyOriented ()
void flip ()
boolean checkValidity ()
void computeValidsFromEdges ()
boolean isClosed ()
Public Member Functions inherited from meshlib.CppObject
final java.lang.foreign.MemorySegment rawPointer ()
final boolean isOwned ()
final void close ()
final java.lang.foreign.MemorySegment release ()

Additional Inherited Members

Protected Member Functions inherited from meshlib.CppObject
 CppObject (java.lang.foreign.MemorySegment ptr, java.util.function.Consumer< java.lang.foreign.MemorySegment > destroy, java.lang.Object owner)

Detailed Description

topology of one or several polylines (how line segments are connected in lines) common for 2D and 3D polylines Generated from class MR::PolylineTopology.

Instances created here own their C++ objects, see CppObject.

Constructor & Destructor Documentation

◆ PolylineTopology() [1/3]

meshlib.PolylineTopology.PolylineTopology ( java.lang.foreign.MemorySegment ptr,
boolean owned,
java.lang.Object owner )

Wraps a pointer from the C bindings. If owned, the object is destroyed when the wrapper dies. owner is kept alive as long as this wrapper is. Not for normal use.

◆ PolylineTopology() [2/3]

meshlib.PolylineTopology.PolylineTopology ( )

Constructs an empty (default-constructed) instance.

Calls MR_PolylineTopology_DefaultConstruct().

◆ PolylineTopology() [3/3]

meshlib.PolylineTopology.PolylineTopology ( meshlib.PolylineTopology _other)

Generated from constructor MR::PolylineTopology::PolylineTopology. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object.

Calls MR_PolylineTopology_ConstructFromAnother().

Member Function Documentation

◆ addPart()

void meshlib.PolylineTopology.addPart ( meshlib.PolylineTopology from,
meshlib.VertMap outVmap,
meshlib.WholeEdgeMap outEmap )

appends polyline topology (from) in addition to the current topology: creates new edges, verts;

Parameters
outVmap,outEmap(optionally) returns mappings: from.id -> this.id Generated from method MR::PolylineTopology::addPart.

Calls MR_PolylineTopology_addPart().

◆ addPartByMask()

void meshlib.PolylineTopology.addPartByMask ( meshlib.PolylineTopology from,
meshlib.UndirectedEdgeBitSet mask,
meshlib.VertMap outVmap,
meshlib.EdgeMap outEmap )

appends polyline topology (from) in addition to the current topology: creates new edges, verts; Generated from method MR::PolylineTopology::addPartByMask.

Calls MR_PolylineTopology_addPartByMask().

◆ addVertId()

meshlib.VertId meshlib.PolylineTopology.addVertId ( )

creates new vert-id not associated with any edge yet Generated from method MR::PolylineTopology::addVertId.

Calls MR_PolylineTopology_addVertId().

◆ assignFromAnother()

meshlib.PolylineTopology meshlib.PolylineTopology.assignFromAnother ( meshlib.PolylineTopology _other)

Generated from method MR::PolylineTopology::operator=. The reference to things referred to by the parameter _other (if any) might be preserved in this object.

Calls MR_PolylineTopology_AssignFromAnother().

◆ buildOpenLines()

void meshlib.PolylineTopology.buildOpenLines ( meshlib.std_vector_MR_VertId comp2firstVert)

build topology of comp2firstVert.size()-1 not-closed polylines each pair (a,b) of indices in

Parameters
comp2firstVertdefines vertex range of a polyline [a,b) Generated from method MR::PolylineTopology::buildOpenLines.

Calls MR_PolylineTopology_buildOpenLines().

◆ checkValidity()

boolean meshlib.PolylineTopology.checkValidity ( )

verifies that all internal data structures are valid Generated from method MR::PolylineTopology::checkValidity.

Calls MR_PolylineTopology_checkValidity().

◆ computeNotLoneUndirectedEdges()

long meshlib.PolylineTopology.computeNotLoneUndirectedEdges ( )

computes the number of not-lone (valid) undirected edges Generated from method MR::PolylineTopology::computeNotLoneUndirectedEdges.

Calls MR_PolylineTopology_computeNotLoneUndirectedEdges().

◆ computeValidsFromEdges()

void meshlib.PolylineTopology.computeValidsFromEdges ( )

computes numValidVerts_ and validVerts_ from edgePerVertex_ Generated from method MR::PolylineTopology::computeValidsFromEdges.

Calls MR_PolylineTopology_computeValidsFromEdges().

◆ deleteEdge()

void meshlib.PolylineTopology.deleteEdge ( meshlib.UndirectedEdgeId ue)

given edge becomes lone after the call, so it is un-spliced from connected edges, and if it was not connected at origin or destination, then that vertex is deleted as well Generated from method MR::PolylineTopology::deleteEdge.

Calls MR_PolylineTopology_deleteEdge().

◆ deleteEdges()

void meshlib.PolylineTopology.deleteEdges ( meshlib.UndirectedEdgeBitSet es)

calls deleteEdge for every set bit Generated from method MR::PolylineTopology::deleteEdges.

Calls MR_PolylineTopology_deleteEdges().

◆ dest()

meshlib.VertId meshlib.PolylineTopology.dest ( meshlib.EdgeId he)

returns destination vertex of half-edge Generated from method MR::PolylineTopology::dest.

Calls MR_PolylineTopology_dest().

◆ edgeCapacity()

long meshlib.PolylineTopology.edgeCapacity ( )

returns the number of allocated edge records Generated from method MR::PolylineTopology::edgeCapacity.

Calls MR_PolylineTopology_edgeCapacity().

◆ edgePerVertex()

meshlib.Vector_MR_EdgeId_MR_VertId meshlib.PolylineTopology.edgePerVertex ( )

for all valid vertices this vector contains an edge with the origin there Generated from method MR::PolylineTopology::edgePerVertex.

Calls MR_PolylineTopology_edgePerVertex().

◆ edgeReserve()

void meshlib.PolylineTopology.edgeReserve ( long newCapacity)

sets the capacity of half-edges vector Generated from method MR::PolylineTopology::edgeReserve.

Calls MR_PolylineTopology_edgeReserve().

◆ edgeSize()

long meshlib.PolylineTopology.edgeSize ( )

returns the number of half-edge records including lone ones Generated from method MR::PolylineTopology::edgeSize.

Calls MR_PolylineTopology_edgeSize().

◆ edgeWithOrg()

meshlib.EdgeId meshlib.PolylineTopology.edgeWithOrg ( meshlib.VertId a)

returns valid edge if given vertex is present in the mesh Generated from method MR::PolylineTopology::edgeWithOrg.

Calls MR_PolylineTopology_edgeWithOrg().

◆ findEdge()

meshlib.EdgeId meshlib.PolylineTopology.findEdge ( meshlib.VertId o,
meshlib.VertId d )

finds and returns edge from o to d in the mesh; returns invalid edge otherwise Generated from method MR::PolylineTopology::findEdge.

Calls MR_PolylineTopology_findEdge().

◆ flip()

void meshlib.PolylineTopology.flip ( )

changes the orientation of all edges: every edge e is replaced with e.sym() Generated from method MR::PolylineTopology::flip.

Calls MR_PolylineTopology_flip().

◆ getOrgs()

meshlib.Vector_MR_VertId_MR_EdgeId meshlib.PolylineTopology.getOrgs ( )

for all edges this vector contains its origin Generated from method MR::PolylineTopology::getOrgs.

Calls MR_PolylineTopology_getOrgs().

◆ getPathVertices()

meshlib.VertBitSet meshlib.PolylineTopology.getPathVertices ( meshlib.std_vector_MR_EdgeId path)

returns all vertices incident to path edges Generated from method MR::PolylineTopology::getPathVertices.

Calls MR_PolylineTopology_getPathVertices().

◆ getValidVerts()

meshlib.VertBitSet meshlib.PolylineTopology.getValidVerts ( )

returns cached set of all valid vertices Generated from method MR::PolylineTopology::getValidVerts.

Calls MR_PolylineTopology_getValidVerts().

◆ getVertDegree()

int meshlib.PolylineTopology.getVertDegree ( meshlib.VertId a)

returns 0 if given vertex does not exist, 1 if it has one incident edge, and 2 if it has two incident edges Generated from method MR::PolylineTopology::getVertDegree.

Calls MR_PolylineTopology_getVertDegree().

◆ getVertIds()

meshlib.VertBitSet meshlib.PolylineTopology.getVertIds ( meshlib.VertBitSet region)

if region pointer is not null then converts it in reference, otherwise returns all valid vertices in the mesh Generated from method MR::PolylineTopology::getVertIds.

Calls MR_PolylineTopology_getVertIds().

◆ hasEdge()

boolean meshlib.PolylineTopology.hasEdge ( meshlib.EdgeId e)

returns true if given edge is within valid range and not-lone Generated from method MR::PolylineTopology::hasEdge.

Calls MR_PolylineTopology_hasEdge().

◆ hasVert()

boolean meshlib.PolylineTopology.hasVert ( meshlib.VertId a)

returns true if given vertex is present in the mesh Generated from method MR::PolylineTopology::hasVert.

Calls MR_PolylineTopology_hasVert().

◆ heapBytes()

long meshlib.PolylineTopology.heapBytes ( )

returns the amount of memory this object occupies on heap Generated from method MR::PolylineTopology::heapBytes.

Calls MR_PolylineTopology_heapBytes().

◆ isClosed()

boolean meshlib.PolylineTopology.isClosed ( )

returns true if the polyline does not have any holes Generated from method MR::PolylineTopology::isClosed.

Calls MR_PolylineTopology_isClosed().

◆ isConsistentlyOriented()

boolean meshlib.PolylineTopology.isConsistentlyOriented ( )

returns true if for each edge e: e == e.next() || e.odd() == next( e ).sym().odd() Generated from method MR::PolylineTopology::isConsistentlyOriented.

Calls MR_PolylineTopology_isConsistentlyOriented().

◆ isLoneEdge()

boolean meshlib.PolylineTopology.isLoneEdge ( meshlib.EdgeId a)

checks whether the edge is disconnected from all other edges and disassociated from all vertices (as if after makeEdge) Generated from method MR::PolylineTopology::isLoneEdge.

Calls MR_PolylineTopology_isLoneEdge().

◆ lastNotLoneEdge()

meshlib.EdgeId meshlib.PolylineTopology.lastNotLoneEdge ( )

returns last not lone edge id, or invalid id if no such edge exists Generated from method MR::PolylineTopology::lastNotLoneEdge.

Calls MR_PolylineTopology_lastNotLoneEdge().

◆ lastNotLoneUndirectedEdge()

meshlib.UndirectedEdgeId meshlib.PolylineTopology.lastNotLoneUndirectedEdge ( )

returns last not lone undirected edge id, or invalid id if no such edge exists Generated from method MR::PolylineTopology::lastNotLoneUndirectedEdge.

Calls MR_PolylineTopology_lastNotLoneUndirectedEdge().

◆ lastValidVert()

meshlib.VertId meshlib.PolylineTopology.lastValidVert ( )

returns last valid vertex id, or invalid id if no single valid vertex exists Generated from method MR::PolylineTopology::lastValidVert.

Calls MR_PolylineTopology_lastValidVert().

◆ makeEdge() [1/2]

meshlib.EdgeId meshlib.PolylineTopology.makeEdge ( )

creates an edge not associated with any vertex Generated from method MR::PolylineTopology::makeEdge.

Calls MR_PolylineTopology_makeEdge_0().

◆ makeEdge() [2/2]

meshlib.EdgeId meshlib.PolylineTopology.makeEdge ( meshlib.VertId a,
meshlib.VertId b,
meshlib.EdgeId e )

makes an edge connecting vertices a and b

Parameters
eif valid then the function does not make new edge, but connects the vertices using given one (and returns it)

if 1) any of the vertices is invalid or not within the vertSize(), 2) or a==b, 3) or either a or b already has 2 incident edges, 4) given edge e is not lone or not within the edgeSize() then makeEdge(a,b) does nothing and returns invalid edge Generated from method MR::PolylineTopology::makeEdge.

Calls MR_PolylineTopology_makeEdge_3().

◆ makeEdges()

int meshlib.PolylineTopology.makeEdges ( meshlib.Edges edges)

for every given edge[ue] calls makeEdge( edge[ue][0], edge[ue][1], ue ), making new edges so that edges.size() <= undirectedEdgeSize() at the end

Returns
the total number of edges created Generated from method MR::PolylineTopology::makeEdges.

Calls MR_PolylineTopology_makeEdges().

◆ makePolyline()

meshlib.EdgeId meshlib.PolylineTopology.makePolyline ( meshlib.VertId vs,
long num )

adds polyline in this topology passing progressively via vertices *[vs, vs+num); if vs[0] == vs[num-1] then a closed polyline is created; return the edge from first to second vertex Generated from method MR::PolylineTopology::makePolyline.

Calls MR_PolylineTopology_makePolyline().

◆ next()

meshlib.EdgeId meshlib.PolylineTopology.next ( meshlib.EdgeId he)

next (counter clock wise) half-edge in the origin ring Generated from method MR::PolylineTopology::next.

Calls MR_PolylineTopology_next().

◆ numValidVerts()

int meshlib.PolylineTopology.numValidVerts ( )

returns the number of valid vertices Generated from method MR::PolylineTopology::numValidVerts.

Calls MR_PolylineTopology_numValidVerts().

◆ opEqual()

boolean meshlib.PolylineTopology.opEqual ( meshlib.PolylineTopology b)

comparison via edges (all other members are considered as not important caches) Generated from method MR::PolylineTopology::operator==.

Calls MR_equal_MR_PolylineTopology().

◆ opNotEqual()

boolean meshlib.PolylineTopology.opNotEqual ( meshlib.PolylineTopology b)

Generated from method MR::PolylineTopology::operator!=.

Calls MR_not_equal_MR_PolylineTopology().

◆ org()

meshlib.VertId meshlib.PolylineTopology.org ( meshlib.EdgeId he)

returns origin vertex of half-edge Generated from method MR::PolylineTopology::org.

Calls MR_PolylineTopology_org().

◆ pack()

void meshlib.PolylineTopology.pack ( meshlib.VertMap outVmap,
meshlib.WholeEdgeMap outEmap )

tightly packs all arrays eliminating lone edges and invalid vertices

Parameters
outVmap,outEmapif given returns mappings: old.id -> new.id; Generated from method MR::PolylineTopology::pack.

Calls MR_PolylineTopology_pack().

◆ read()

boolean meshlib.PolylineTopology.read ( meshlib.std_istream s)

loads this from binary stream Generated from method MR::PolylineTopology::read.

Calls MR_PolylineTopology_read().

◆ setOrg()

void meshlib.PolylineTopology.setOrg ( meshlib.EdgeId a,
meshlib.VertId v )

sets new origin to the full origin ring including this edge

edgePerVertex_ table is updated accordingly Generated from method MR::PolylineTopology::setOrg.

Calls MR_PolylineTopology_setOrg().

◆ splice()

void meshlib.PolylineTopology.splice ( meshlib.EdgeId a,
meshlib.EdgeId b )

given two half edges do either of two:
1) if a and b were from distinct rings, puts them in one ring;
2) if a and b were from the same ring, puts them in separate rings;

the cut in rings in both cases is made after a and b Generated from method MR::PolylineTopology::splice.

Calls MR_PolylineTopology_splice().

◆ splitEdge()

meshlib.EdgeId meshlib.PolylineTopology.splitEdge ( meshlib.EdgeId e)

split given edge on two parts: dest(returned-edge) = org(e) - newly created vertex, org(returned-edge) = org(e-before-split), dest(e) = dest(e-before-split) Generated from method MR::PolylineTopology::splitEdge.

Calls MR_PolylineTopology_splitEdge().

◆ undirectedEdgeCapacity()

long meshlib.PolylineTopology.undirectedEdgeCapacity ( )

returns the number of allocated undirected edges (pairs of half-edges) Generated from method MR::PolylineTopology::undirectedEdgeCapacity.

Calls MR_PolylineTopology_undirectedEdgeCapacity().

◆ undirectedEdgeSize()

long meshlib.PolylineTopology.undirectedEdgeSize ( )

returns the number of undirected edges (pairs of half-edges) including lone ones Generated from method MR::PolylineTopology::undirectedEdgeSize.

Calls MR_PolylineTopology_undirectedEdgeSize().

◆ vertCapacity()

long meshlib.PolylineTopology.vertCapacity ( )

returns the number of allocated vert records Generated from method MR::PolylineTopology::vertCapacity.

Calls MR_PolylineTopology_vertCapacity().

◆ vertReserve()

void meshlib.PolylineTopology.vertReserve ( long newCapacity)

sets the capacity of vertices vector Generated from method MR::PolylineTopology::vertReserve.

Calls MR_PolylineTopology_vertReserve().

◆ vertResize()

void meshlib.PolylineTopology.vertResize ( long newSize)

explicitly increases the size of vertices vector Generated from method MR::PolylineTopology::vertResize.

Calls MR_PolylineTopology_vertResize().

◆ vertResizeWithReserve()

void meshlib.PolylineTopology.vertResizeWithReserve ( long newSize)

explicitly increases the size of vertices vector, doubling the current capacity if it was not enough Generated from method MR::PolylineTopology::vertResizeWithReserve.

Calls MR_PolylineTopology_vertResizeWithReserve().

◆ vertSize()

long meshlib.PolylineTopology.vertSize ( )

returns the number of vertex records including invalid ones Generated from method MR::PolylineTopology::vertSize.

Calls MR_PolylineTopology_vertSize().

◆ write()

void meshlib.PolylineTopology.write ( meshlib.std_ostream s)

saves this in binary stream Generated from method MR::PolylineTopology::write.

Calls MR_PolylineTopology_write().


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