politopix  4.1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
PseudoSumWithoutCaps Class Reference

Compute the Minkowski sum of two polytopes and then remove all cap half-spaces to truncate again. More...

#include <PolyhedralAlgorithms_Rn.h>

Inheritance diagram for PseudoSumWithoutCaps:
Inheritance graph
Collaboration diagram for PseudoSumWithoutCaps:
Collaboration graph

Public Member Functions

 PseudoSumWithoutCaps (const boost::shared_ptr< Polytope_Rn > &A, const boost::shared_ptr< Polytope_Rn > &B, boost::shared_ptr< Polytope_Rn > &C, const std::set< unsigned int > &firstOperandCaps, const std::set< unsigned int > &secondOperandCaps, std::set< unsigned int > &newCaps, double bb_size=1000.)
 Compute the Minkowski sum of two polytopes and then remove all cap half-spaces to truncate again. More...
 
- Public Member Functions inherited from MinkowskiSum
 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_RnrebuildSum (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_RnrebuildSum (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...
 
void computeCapHalfSpaces (const std::set< unsigned int > &firstOperandCaps, const std::set< unsigned int > &secondOperandCaps, std::set< unsigned int > &sumCaps) throw (std::domain_error)
 Return the cap half-spaces of the sum in function of the two operands cap half-spaces. More...
 
- Protected Member Functions inherited from MinkowskiSum
boost::shared_ptr< Polytope_Rncompute () throw (std::domain_error)
 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) throw (std::domain_error)
 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 throw (std::domain_error)
 Return the cap half-spaces of the sum in function of the two operands cap half-spaces. More...
 

Additional Inherited Members

- Protected Attributes inherited from MinkowskiSum
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...
 

Detailed Description

Compute the Minkowski sum of two polytopes and then remove all cap half-spaces to truncate again.

Definition at line 269 of file PolyhedralAlgorithms_Rn.h.

Constructor & Destructor Documentation

PseudoSumWithoutCaps::PseudoSumWithoutCaps ( const boost::shared_ptr< Polytope_Rn > &  A,
const boost::shared_ptr< Polytope_Rn > &  B,
boost::shared_ptr< Polytope_Rn > &  C,
const std::set< unsigned int > &  firstOperandCaps,
const std::set< unsigned int > &  secondOperandCaps,
std::set< unsigned int > &  newCaps,
double  bb_size = 1000. 
)
inline

Compute the Minkowski sum of two polytopes and then remove all cap half-spaces to truncate again.

Definition at line 274 of file PolyhedralAlgorithms_Rn.h.

Member Function Documentation

void PseudoSumWithoutCaps::computeCapHalfSpaces ( const std::set< unsigned int > &  firstOperandCaps,
const std::set< unsigned int > &  secondOperandCaps,
std::set< unsigned int > &  sumCaps 
)
throw (std::domain_error
)
protected

Return the cap half-spaces of the sum in function of the two operands cap half-spaces.

For each facet of the sum F_C, build F_A and F_B such as F_C = F_A + F_B.

Definition at line 886 of file PolyhedralAlgorithms_Rn.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

boost::shared_ptr< Polytope_Rn > PseudoSumWithoutCaps::rebuildSum ( const std::set< unsigned int > &  firstOperandCaps,
const std::set< unsigned int > &  secondOperandCaps,
std::set< unsigned int > &  newCaps,
double  bb_size = 1000. 
)
protected

Remove the cap half-spaces stored in sets and then truncate again.

Returns
The new sum

Definition at line 1078 of file PolyhedralAlgorithms_Rn.cpp.

Here is the call graph for this function:


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