NLToolbox
|
00001 /* 00002 * ReachPolynomial.h 00003 * 00004 * Created on: Nov 21, 2012 00005 * Author: romain 00006 */ 00007 00008 #ifndef REACHPOLYNOMIAL_H_ 00009 #define REACHPOLYNOMIAL_H_ 00010 00011 #include "PolynomialSystem.h" 00012 #include "Hpolyhedron.h" 00013 #include "Box.h" 00014 #include "utils.h" 00015 00016 namespace nltool { 00017 00018 00019 class ReachPolynomial { 00020 public: 00021 ReachPolynomial(PolynomialSystem &poly); 00022 virtual ~ReachPolynomial(); 00023 00024 Hpolyhedron reach(Hpolyhedron &initialSet); 00025 Hpolyhedron reach(Hpolyhedron &initialSet, Template& templates); 00026 00027 int computeBernsteinCoef(const int dim, Polynom& poly, multiIndice& maxDegrees, 00028 std::vector<Number>& coef, const std::vector<Polynom> unitBoxMap); 00029 int computedPinv(PolynomialSystem discret); 00030 bool isUseNormalDynamic() const; 00031 void setUseNormalDynamic(bool useNormalDynamic); 00032 00033 00034 bool useNormalDynamic; 00035 private: 00036 unsigned dimension; 00037 PolynomialSystem polySystem; 00038 00039 00040 bool useRefinement; 00041 00042 // oriented bounding box 00043 bool dynamicBounds; 00044 Matrix boxRotation; 00045 bool firstIteration; 00046 00047 // bernstein coeff interpollation 00048 bool interpolateCoef; 00049 Matrix P_inv; 00050 bool P_inv_computed; 00051 bool debugMode; 00052 }; 00053 00054 } // namespace nltool 00055 00056 #endif /* REACHPOLYNOMIAL_H_ */