shape_doc 0.1
|
00001 /***************************************************************************** 00002 * M a t h e m a g i x 00003 ***************************************************************************** 00004 * AlgebraicCurve 00005 * 2008-03-28 00006 * Julien Wintz & Bernard Mourrain 00007 ***************************************************************************** 00008 * Copyright (C) 2006 INRIA Sophia-Antipolis 00009 ***************************************************************************** 00010 * Comments : 00011 ****************************************************************************/ 00012 00013 # ifndef shape_semialgebraic_set_hpp 00014 # define shape_semialgebraic_set_hpp 00015 00016 # include <shape/algebraic_set.hpp> 00017 # define TMPL template<class K> 00018 # define SemialgebraicSet semialgebraic_set<K> 00019 //==================================================================== 00020 namespace mmx { 00021 00022 namespace shape { 00023 TMPL struct semialgebraic_set_def { 00024 typedef typename algebraic_set_def<K>::Polynomial Polynomial; 00025 }; 00026 00027 TMPL 00028 class semialgebraic_set 00029 { 00030 public: 00031 typedef typename semialgebraic_set_def<K>::Polynomial Polynomial; 00032 00033 semialgebraic_set(void) {}; 00034 semialgebraic_set(const char* str1, int s1) ; 00035 semialgebraic_set(const char* str1, int s1, const char* str2, int s2) ; 00036 semialgebraic_set(const Polynomial& eq, int s) ; 00037 semialgebraic_set(const Polynomial& eq1, int s1, const Polynomial& eq2, int s2) ; 00038 ~semialgebraic_set(void) {}; 00039 00040 Seq<Polynomial> inequations() const { return this->m_polynomials ; } 00041 00042 Polynomial inequation(int i=0) const { return this->m_polynomials[i] ; } 00043 int sign(int i=0) const { return this->m_signs[i] ; } 00044 00045 void insert(const Polynomial& p, int s) { 00046 this->m_polynomials<<p; this->m_signs<<s; 00047 } 00048 int nbineq() const { return m_polynomials.size(); } 00049 00050 private: 00051 Seq<Polynomial> m_polynomials ; 00052 Seq<int> m_signs; 00053 } ; 00054 00055 TMPL 00056 SemialgebraicSet::semialgebraic_set(const char* s1,int i1) { 00057 m_polynomials<<Polynomial(s1); 00058 m_signs<<i1; 00059 } 00060 00061 TMPL 00062 SemialgebraicSet::semialgebraic_set(const char* s1, int i1, const char* s2, int i2) { 00063 m_polynomials<< (i1<0? (-1)*Polynomial(s1) : s1) ; 00064 m_polynomials<< (i2<0? (-1)*Polynomial(s2) : s2) ; 00065 } 00066 00067 TMPL 00068 SemialgebraicSet::semialgebraic_set(const Polynomial& p1, int i1) { 00069 m_polynomials<< (i1<0? (-1)*p1 : p1) ; 00070 //m_signs<<i1; 00071 } 00072 00073 TMPL 00074 SemialgebraicSet::semialgebraic_set(const Polynomial& p1, int i1, const Polynomial& p2, int i2) { 00075 m_polynomials<<p1; 00076 m_polynomials<<p2; 00077 } 00078 00079 00080 } ; // namespace shape 00081 } ; // namespace mmx 00082 00083 # undef TMPL 00084 # undef SemialgebraicSet 00085 # endif // shape_semialgebraic_set_hpp