This class can be more time-consuming than WeakRedundancyProcessing or NoRedundancyProcessing because it will perform extra checks in the process of intersecting half-spaces. To determine if two vertices are neighbors it will make sure not to count half-spaces marked as redundant.
More...
#include <UpdDoubleDescription_Rn.h>
|
| StrongRedundancyProcessing (unsigned int ngbCond) |
|
virtual | ~StrongRedundancyProcessing () |
|
void | fillListOfRedundantHS (const POLYHEDRON, std::vector< unsigned int > &, std::set< unsigned int > &getListOfRedundantHS) |
|
void | initNumberOfVerticesPerHalfSpace (const std::vector< boost::shared_ptr< Generator_Rn_SD > > &LG, unsigned int nbHS, unsigned int nbHP=0) |
| Make sure all back pointers from half-spaces to vertices are set. More...
|
|
void | addHalfSpace (bool isHyperplane) |
| Make space for a new half-space. More...
|
|
void | updateNumberOfVerticesPerHalfSpace (unsigned int HS, const std::vector< boost::shared_ptr< Generator_Rn_SD > > &GN_ON) |
| The current face must mark all the vertices with state ON. More...
|
|
void | incrementNumberForVerticesForHalfSpace (const boost::shared_ptr< Generator_Rn_SD > &GEN) |
| Make sure all the half-spaces belonging to a given generator have their vertices number incremented. More...
|
|
void | decrementNumberForVerticesForHalfSpace (const boost::shared_ptr< Generator_Rn_SD > &GEN) |
| Make sure all the half-spaces belonging to a given generator have their vertices number decremented. More...
|
|
bool | checkNeighbours (POLYHEDRON poly, const boost::shared_ptr< Generator_Rn_SD > &genIn, const boost::shared_ptr< Generator_Rn_SD > &genOut, std::vector< unsigned int > &commonFacets) |
|
void | unhookThisRedundantHalfSpace (std::vector< boost::shared_ptr< Generator_Rn_SD > > &listOfGen, unsigned int thisRedundantHS, unsigned int numberOfGeneratorsPerFacetWithoutHyp) |
|
virtual void | updateListOfRedundantHalfSpaces (std::vector< boost::shared_ptr< Generator_Rn_SD > > &listOfGen, int numberOfGeneratorsPerFacetWithoutHyp) |
|
void | unhookRedundantHalfSpaces (POLYHEDRON poly) |
|
void | unhookRedundantGenerators (POLYHEDRON poly) |
|
void | markHdescription (TrackingOperatorToResult &trackerHdesc, unsigned int truncationStep) |
|
void | dumpListOfRedundantHS (POLYHEDRON poly, std::ostream &this_stream) |
|
void | dumpSD (std::ostream &this_stream) |
|
template<class POLYHEDRON>
class StrongRedundancyProcessing< POLYHEDRON >
This class can be more time-consuming than WeakRedundancyProcessing or NoRedundancyProcessing because it will perform extra checks in the process of intersecting half-spaces. To determine if two vertices are neighbors it will make sure not to count half-spaces marked as redundant.
Definition at line 623 of file UpdDoubleDescription_Rn.h.
◆ StrongRedundancyProcessing()
template<class POLYHEDRON >
◆ ~StrongRedundancyProcessing()
template<class POLYHEDRON >
◆ addHalfSpace()
template<class POLYHEDRON >
◆ checkNeighbours()
template<class POLYHEDRON >
◆ decrementNumberForVerticesForHalfSpace()
template<class POLYHEDRON >
Make sure all the half-spaces belonging to a given generator have their vertices number decremented.
Definition at line 707 of file UpdDoubleDescription_Rn.h.
◆ dumpListOfRedundantHS()
template<class POLYHEDRON >
◆ dumpSD()
template<class POLYHEDRON >
◆ fillListOfRedundantHS()
template<class POLYHEDRON >
void StrongRedundancyProcessing< POLYHEDRON >::fillListOfRedundantHS |
( |
const |
POLYHEDRON, |
|
|
std::vector< unsigned int > & |
, |
|
|
std::set< unsigned int > & |
getListOfRedundantHS |
|
) |
| |
|
inline |
◆ incrementNumberForVerticesForHalfSpace()
template<class POLYHEDRON >
Make sure all the half-spaces belonging to a given generator have their vertices number incremented.
Definition at line 700 of file UpdDoubleDescription_Rn.h.
◆ initNumberOfVerticesPerHalfSpace()
template<class POLYHEDRON >
◆ markHdescription()
template<class POLYHEDRON >
◆ unhookRedundantGenerators()
template<class POLYHEDRON >
In some cases fuzzy generators are located somewhere in a fuzzy and are computed with redundant half-spaces. As they are likely not to have the sufficient number of half-spaces through the process, unhook them.
Definition at line 921 of file UpdDoubleDescription_Rn.h.
◆ unhookRedundantHalfSpaces()
template<class POLYHEDRON >
◆ unhookThisRedundantHalfSpace()
template<class POLYHEDRON >
void StrongRedundancyProcessing< POLYHEDRON >::unhookThisRedundantHalfSpace |
( |
std::vector< boost::shared_ptr< Generator_Rn_SD > > & |
listOfGen, |
|
|
unsigned int |
thisRedundantHS, |
|
|
unsigned int |
numberOfGeneratorsPerFacetWithoutHyp |
|
) |
| |
|
inline |
Thanks to _allGenPerLinearConstraint we know all the generators associated to a given linear constraint. So remove thisRedundantHS from all the generators pointing towards him.
Definition at line 732 of file UpdDoubleDescription_Rn.h.
◆ updateListOfRedundantHalfSpaces()
template<class POLYHEDRON >
Inspect all half-spaces, find their lists of generators and numbers of generators to know whether they are redundant or not.
The test checking if the list of generators of a half-space H is included into the list of another one. H might not be a redundant half-space. Take the case of a segment in 3D defined by 2 hyperplanes and 2 bounding half-spaces. The lists of generators of the 2 half-spaces are included into the list of generators of the 2 hyperplanes but the half-spaces are not redundant.
Definition at line 794 of file UpdDoubleDescription_Rn.h.
◆ updateNumberOfVerticesPerHalfSpace()
template<class POLYHEDRON >
◆ _allGenPerLinearConstraint
template<class POLYHEDRON >
◆ _isHalfSpace
template<class POLYHEDRON >
◆ _listOfRedundantHS
template<class POLYHEDRON >
◆ _neigbourhoodCondition
template<class POLYHEDRON >
◆ _numberOfProcessedHyperplanes
template<class POLYHEDRON >
◆ _numberOfProcessedLinearConstraints
template<class POLYHEDRON >
The documentation for this class was generated from the following file: