NLToolbox
src/include/ReachPolynomial.h
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_ */
 All Classes Namespaces Functions