Tangent space and bounding polytope approximating some patch of the manifold. More...
#include <ompl/base/spaces/constraint/AtlasChart.h>
Public Member Functions | |
AtlasChart (const AtlasChart &)=delete | |
AtlasChart & | operator= (const AtlasChart &)=delete |
AtlasChart (const AtlasStateSpace *atlas, const AtlasStateSpace::StateType *state) | |
Create a tangent space chart for atlas with center at ambient space point xorigin. More... | |
~AtlasChart () | |
Destructor. | |
void | clear () |
Forget all acquired information such as the halfspace boundary. | |
const AtlasStateSpace::StateType * | getOrigin () const |
Returns phi(0), the center of the chart in ambient space. | |
unsigned int | getAmbientDimension () const |
Returns the dimension of the ambient space. | |
unsigned int | getManifoldDimension () const |
Returns the dimension of the manifold. | |
void | phi (const Eigen::Ref< const Eigen::VectorXd > &u, Eigen::Ref< Eigen::VectorXd > out) const |
Rewrite a chart point u in ambient space coordinates and store the result in out, which should be allocated to size n_. | |
bool | psi (const Eigen::Ref< const Eigen::VectorXd > &u, Eigen::Ref< Eigen::VectorXd > out) const |
Exponential mapping. Project chart point u onto the manifold and store the result in out, which should be allocated to size n_. | |
void | psiInverse (const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::Ref< Eigen::VectorXd > out) const |
Logarithmic mapping. Project ambient point x onto the chart and store the result in out, which should be allocated to size k_. | |
bool | inPolytope (const Eigen::Ref< const Eigen::VectorXd > &u, const Halfspace *ignore1=nullptr, const Halfspace *ignore2=nullptr) const |
Check if a point u on the chart lies within its polytope boundary. Can ignore up to 2 of the halfspaces if specified in ignore1 and ignore2. | |
void | borderCheck (const Eigen::Ref< const Eigen::VectorXd > &v) const |
Check if chart point v lies very close to any part of the boundary. Wherever it does, expand the neighboring chart's boundary to include. | |
const AtlasChart * | owningNeighbor (const Eigen::Ref< const Eigen::VectorXd > &x) const |
Try to find an owner for ambient point \x from among the neighbors of this chart. Returns nullptr if none found. | |
bool | toPolygon (std::vector< Eigen::VectorXd > &vertices) const |
For manifolds of dimension 2, return in order in vertices the polygon boundary of this chart, including an approximation of the circular boundary where the polygon exceeds radius rho_. Returns true if a circular portion is included. | |
std::size_t | getNeighborCount () const |
Returns the number of charts this chart shares a halfspace boundary with. | |
bool | estimateIsFrontier () const |
Use sampling to make a quick estimate as to whether this chart's polytope boundary is completely defined by its halfspaces. | |
Static Public Member Functions | |
static void | generateHalfspace (AtlasChart *c1, AtlasChart *c2) |
Create two complementary halfspaces dividing the space between charts c1 and c2, and add them to the charts' polytopes boundaries. More... | |
Protected Member Functions | |
void | addBoundary (Halfspace *halfspace) |
Introduce a new halfspace to the chart's bounding polytope. This chart assumes responsibility for deleting halfspace. More... | |
Protected Attributes | |
const Constraint * | constraint_ |
The constraint function that defines the manifold. | |
std::vector< Halfspace * > | polytope_ |
Set of halfspaces defining the polytope boundary. | |
Detailed Description
Tangent space and bounding polytope approximating some patch of the manifold.
Definition at line 116 of file AtlasChart.h.
Constructor & Destructor Documentation
◆ AtlasChart()
ompl::base::AtlasChart::AtlasChart | ( | const AtlasStateSpace * | atlas, |
const AtlasStateSpace::StateType * | state | ||
) |
Create a tangent space chart for atlas with center at ambient space point xorigin.
- Exceptions
-
ompl::Exception when manifold seems degenerate here.
Public
Definition at line 152 of file AtlasChart.cpp.
Member Function Documentation
◆ addBoundary()
|
protected |
Introduce a new halfspace to the chart's bounding polytope. This chart assumes responsibility for deleting halfspace.
Protected.
Definition at line 387 of file AtlasChart.cpp.
◆ generateHalfspace()
|
static |
Create two complementary halfspaces dividing the space between charts c1 and c2, and add them to the charts' polytopes boundaries.
Public Static.
- Note
- Charts must be different charts from the same atlas.
Definition at line 369 of file AtlasChart.cpp.
The documentation for this class was generated from the following files:
- ompl/base/spaces/constraint/AtlasChart.h
- ompl/base/spaces/constraint/src/AtlasChart.cpp