Tcpolytope Struct Reference

Detailed Description

The area of influence of a chart is bounded by a polytope. This is used to determine which charts are exterior (belong to the expanding frontier of the exploration) and which are interior (completely sorrounded by other local charts). (See the atlas structure to see how charts are ensambled together.) The polytope is represented as a set of vertices that is updated every time a new chart is added to the atlas. In this case, the polytope stored in the chart is cut (removing vertices and adding new ones) with a plane derived from the intersection with the new neighbouring charts. Charts with all vertices inside the (hyper)sphere are interior.

Being able to differentiate between interior and exterior charts allows to control the ratio of expansion/refinement of the atlas.

See also
chart.h,chart.c.

Definition at line 68 of file cpolytope.h.

Data Fields

unsigned int k
 
double r
 
double v
 
boolean emptyPolytope
 
unsigned int nFaces
 
unsigned int maxFaces
 
double ** face
 
unsigned int * ID
 
unsigned int maxVertices
 
unsigned int nVertices
 
double ** vertex
 
booleanexpandible
 
unsigned int nExpandible
 
unsigned int freeVertex
 
unsigned int * nIndices
 
unsigned int * maxIndices
 
unsigned int ** indices
 
Tbox bb
 
boolean open
 

Field Documentation

◆ k

unsigned int Tcpolytope::k

Dimension of the feasible velocity space. Can be lower than the dimension of the manifold in the presence of kino-constraints. If so, the 'k' here is lower than the 'k' in the corresponding chart. Parameter here only use the first components of the tangent space (the rest, used in chart. are assumed to be zero).

Definition at line 69 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytope(), CutPolytopeWithFace(), DefinePolytope(), GetPolytopeDim(), GetPolytopeInteriorPoint(), GetPolytopeNeighboursFromVertices(), GetPolytopeVertices(), HaveEdge(), InitEmptyPolytope(), InsidePolytope(), LoadPolytope(), Polytope2SPolytope(), PolytopeBoundaryPointFromExternalCornerInt(), PolytopeBoundaryPointsFromExternalCorners(), PolytopeCenter(), PolytopeMaxVolume(), PolytopeMemSize(), PolytopeRandomPointOnBoundary(), PolytopeVolume(), RandomPointInPolytope(), and SavePolytope().

◆ r

double Tcpolytope::r

Radius around p (in tangent space) where the linearization holds. About half the size of the box containing the ball (it is not exactly half due to the POLYTOPE_R_ENLARGEMENT).

Definition at line 75 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytope(), CutPolytopeWithFace(), DefinePolytope(), GetPolytopeRadius(), InitEmptyPolytope(), InsidePolytope(), LoadPolytope(), Polytope2SPolytope(), PolytopeBoundaryPointFromExternalCornerInt(), PolytopeMaxVolume(), RandomPointInPolytope(), and SavePolytope().

◆ v

double Tcpolytope::v

Volume of the polytope.

Definition at line 79 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), InitEmptyPolytope(), LoadPolytope(), PolytopeVolume(), and SavePolytope().

◆ emptyPolytope

◆ nFaces

◆ maxFaces

unsigned int Tcpolytope::maxFaces

◆ face

double** Tcpolytope::face

Parameters of the faces defining the polytope

Definition at line 89 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), DefinePolytope(), DeletePolytope(), InsidePolytope(), LoadPolytope(), Polytope2SPolytope(), PrintPolytopeInfo(), and SavePolytope().

◆ ID

unsigned int* Tcpolytope::ID

◆ maxVertices

◆ nVertices

unsigned int Tcpolytope::nVertices

◆ vertex

◆ expandible

boolean* Tcpolytope::expandible

TRUE for that can not be used to expand the chart (vertices out of the chart ball, vertices with some error)

Definition at line 96 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), DefinePolytope(), DeletePolytope(), LoadPolytope(), PolytopeBoundaryPointFromExternalCornerInt(), SavePolytope(), and WrongPolytopeCorner().

◆ nExpandible

◆ freeVertex

unsigned int Tcpolytope::freeVertex

First free vertex.

Definition at line 100 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), DefinePolytope(), DeletePolytope(), LoadPolytope(), and SavePolytope().

◆ nIndices

unsigned int* Tcpolytope::nIndices

Number of face index per vertex.

Definition at line 102 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), DefinePolytope(), DeletePolytope(), LoadPolytope(), PrintPolytopeInfo(), and SavePolytope().

◆ maxIndices

◆ indices

unsigned int** Tcpolytope::indices

Indices of the faces defining a vertex. Vertices with k-1 common faces define an edge. Edges that cross new faces added to the polytope define the new vertices (and the vertices to be removed).

Definition at line 104 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), DefinePolytope(), DeletePolytope(), HaveEdge(), LoadPolytope(), PrintPolytopeInfo(), and SavePolytope().

◆ bb

Tbox Tcpolytope::bb

◆ open

boolean Tcpolytope::open

TRUE if the polytope has "open" borders, i.e., faces not given by another chart but with an undefined neighbour. These are undefined or given by the global domain borders.

Definition at line 110 of file cpolytope.h.

Referenced by CopyPolytope(), CutPolytopeWithFace(), DefinePolytope(), InitEmptyPolytope(), LoadPolytope(), and SavePolytope().