politopix
5.0.0
|
Compute the Minkowski sum of two polytopes. More...
#include <PolyhedralAlgorithms_Rn.h>
Public Member Functions | |
MinkowskiSum () | |
Sets up the data structure for the computation of the Minkowski sum of two polytopes. More... | |
MinkowskiSum (const boost::shared_ptr< Polytope_Rn > &A, const boost::shared_ptr< Polytope_Rn > &B) | |
Sets up the data structure for the computation of the Minkowski sum of two polytopes. More... | |
MinkowskiSum (const boost::shared_ptr< Polytope_Rn > &A, const boost::shared_ptr< Polytope_Rn > &B, boost::shared_ptr< Polytope_Rn > &C) | |
Compute the Minkowski sum of two polytopes. More... | |
MinkowskiSum (const std::vector< boost::shared_ptr< Polytope_Rn > > &arrayOfPolytopes, boost::shared_ptr< Polytope_Rn > &C) | |
Compute the Minkowski sum of several polytopes. More... | |
MinkowskiSum (const boost::shared_ptr< Polytope_Rn > &A, const boost::shared_ptr< Polytope_Rn > &B, boost::shared_ptr< Polytope_Rn > &C, const std::vector< std::vector< int > > &genitorsOfGeneratorsA, const std::vector< std::vector< int > > &genitorsOfGeneratorsB, std::vector< std::vector< int > > &traceGenerators) | |
Compute the Minkowski sum of two polytopes. More... | |
boost::shared_ptr< Polytope_Rn > | rebuildSum (const std::set< unsigned int > &firstOperandCaps, const std::set< unsigned int > &secondOperandCaps, std::set< unsigned int > &newCaps, double bb_size=1000.) |
Remove the cap half-spaces stored in sets and then truncate again. More... | |
Protected Member Functions | |
boost::shared_ptr< Polytope_Rn > | compute () |
Compute the common refinement of the two operands normal fans and then build the sum. More... | |
void | computeCommonRefinement (const std::vector< boost::shared_ptr< Generator_Rn > > &listOfGenerators_A, const std::vector< boost::shared_ptr< Generator_Rn > > &listOfGenerators_B, std::vector< boost::shared_ptr< Generator_Rn > > &listOfGenerators_C, const std::vector< boost::shared_ptr< PolyhedralCone_Rn > > &listOfDualCones_A, const std::vector< boost::shared_ptr< PolyhedralCone_Rn > > &listOfDualCones_B, std::vector< boost::shared_ptr< PolyhedralCone_Rn > > &listOfDualCones_C) |
Just compute the common refinement of the two operands normal fans. More... | |
void | processNormalFan0 () |
Do the final job after having intersected all dual cones. The reduction process simply compares all dual cones generators. More... | |
void | processNormalFan1 () |
Do the final job after having intersected all dual cones. The reduction process uses neighbourhood properties to identify dual cones generators. More... | |
void | processNormalFan2 () |
Do the final job after having intersected all dual cones. The reduction process builds half-spaces and identifies them with they generators lists. More... | |
void | computeCapHalfSpaces (const std::set< unsigned int > &firstOperandCaps, const std::set< unsigned int > &secondOperandCaps, std::set< unsigned int > &sumCaps) const |
Return the cap half-spaces of the sum in function of the two operands cap half-spaces. More... | |
Protected Attributes | |
const boost::shared_ptr< Polytope_Rn > | _firstOperand |
const boost::shared_ptr< Polytope_Rn > | _secondOperand |
boost::shared_ptr< Polytope_Rn > | _sum |
std::vector< std::vector< unsigned int > > | _A2C |
Store the polyhedrical cap in C of each vertex of A. More... | |
std::vector< std::vector< unsigned int > > | _B2C |
Store the polyhedrical cap in C of each vertex of B. More... | |
std::vector< std::vector< unsigned int > > | _neighboursA |
Store the neighbours of each vertex of A. More... | |
std::vector< std::vector< unsigned int > > | _neighboursB |
Store the neighbours of each vertex of B. More... | |
std::vector< std::pair< unsigned int, unsigned int > > | _MinkowskiDecomposition |
Store the genitors in A and B of each vertex of C. More... | |
std::vector< bool > | _MinkowskiDecompositionOK |
Tell whether _MinkowskiDecomposition had to be considered or not. More... | |
std::vector< boost::shared_ptr< PolyhedralCone_Rn > > | _NF_Cones |
The normal fan polyhedrical cones list. More... | |
std::vector< boost::shared_ptr< Generator_Rn > > | _NF_Vertices |
The list of C vertices. More... | |
Compute the Minkowski sum of two polytopes.
Definition at line 138 of file PolyhedralAlgorithms_Rn.h.
|
inline |
Sets up the data structure for the computation of the Minkowski sum of two polytopes.
Definition at line 143 of file PolyhedralAlgorithms_Rn.h.
|
inline |
Sets up the data structure for the computation of the Minkowski sum of two polytopes.
Definition at line 147 of file PolyhedralAlgorithms_Rn.h.
|
inline |
Compute the Minkowski sum of two polytopes.
Definition at line 153 of file PolyhedralAlgorithms_Rn.h.
MinkowskiSum::MinkowskiSum | ( | const std::vector< boost::shared_ptr< Polytope_Rn > > & | arrayOfPolytopes, |
boost::shared_ptr< Polytope_Rn > & | C | ||
) |
Compute the Minkowski sum of several polytopes.
Definition at line 346 of file PolyhedralAlgorithms_Rn.cpp.
|
inline |
Compute the Minkowski sum of two polytopes.
Definition at line 165 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Compute the common refinement of the two operands normal fans and then build the sum.
Definition at line 526 of file PolyhedralAlgorithms_Rn.cpp.
|
protected |
Return the cap half-spaces of the sum in function of the two operands cap half-spaces.
|
protected |
Just compute the common refinement of the two operands normal fans.
Definition at line 399 of file PolyhedralAlgorithms_Rn.cpp.
|
protected |
Do the final job after having intersected all dual cones. The reduction process simply compares all dual cones generators.
Definition at line 892 of file PolyhedralAlgorithms_Rn.cpp.
|
protected |
Do the final job after having intersected all dual cones. The reduction process uses neighbourhood properties to identify dual cones generators.
Definition at line 765 of file PolyhedralAlgorithms_Rn.cpp.
|
protected |
Do the final job after having intersected all dual cones. The reduction process builds half-spaces and identifies them with they generators lists.
Definition at line 627 of file PolyhedralAlgorithms_Rn.cpp.
boost::shared_ptr<Polytope_Rn> MinkowskiSum::rebuildSum | ( | const std::set< unsigned int > & | firstOperandCaps, |
const std::set< unsigned int > & | secondOperandCaps, | ||
std::set< unsigned int > & | newCaps, | ||
double | bb_size = 1000. |
||
) |
Remove the cap half-spaces stored in sets and then truncate again.
|
protected |
Store the polyhedrical cap in C of each vertex of A.
Definition at line 237 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Store the polyhedrical cap in C of each vertex of B.
Definition at line 239 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Definition at line 228 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Store the genitors in A and B of each vertex of C.
Definition at line 253 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Tell whether _MinkowskiDecomposition had to be considered or not.
Definition at line 255 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Store the neighbours of each vertex of A.
neighboursA(a_i,a_j)==1 <=> a_i R a_j
Definition at line 243 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Store the neighbours of each vertex of B.
neighboursB(b_i,b_j)==1 <=> b_u R b_v
Definition at line 246 of file PolyhedralAlgorithms_Rn.h.
|
protected |
The normal fan polyhedrical cones list.
Definition at line 258 of file PolyhedralAlgorithms_Rn.h.
|
protected |
The list of C vertices.
Definition at line 260 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Definition at line 229 of file PolyhedralAlgorithms_Rn.h.
|
protected |
Definition at line 230 of file PolyhedralAlgorithms_Rn.h.