shape_doc 0.1
mmx::shape Namespace Reference

Classes

Functions

Variables


Function Documentation

graphic<C,V>* mmx::shape::as_graphic ( const curve_rational< C, V > &  c,
unsigned  N = 100 
)
Examples:
algebraic_curve3d_test.cpp, rational_curve_test.cpp, and topology3d_test.cpp.

Definition at line 178 of file curve_rational.hpp.

References Edge, and GRAPHIC.

Referenced by as_graphic().

                                           {
  typedef typename curve_pl<C,V>::Point Point;
  typedef typename curve_pl<C,V>::Edge  Edge;
  typedef C                    Scalar;


  GRAPHIC* r = new GRAPHIC( GRAPHIC::E_LINE, N+1, 2*N);
  
  Scalar t=c.tmin(),dt=(c.tmax()-c.tmin())/N;
  for(unsigned i=0;i<=N;i++) {
    Scalar w=c.denominator()(t);
    for(unsigned j=0;j<3;j++) 
      r->vertices[3*i+j]=c.numerator(j)(t)/w;
    t+=dt;
  }

  for(unsigned i=0;i<N;i++) {
    r->indices[2*i]=i;
    r->indices[2*i+1]=i+1;
  }
  return r;
}
graphic<C,V>* mmx::shape::as_graphic ( const mesher3d_curve_algebraic< C, V > &  tp)

Definition at line 318 of file mesher3d_curve_algebraic.hpp.

References Edge.

                                         {

  typedef typename SELF::Point  Point; 
  typedef typename SELF::Edge   Edge;
  typedef graphic<C,V>          Graphic;

  int nbi=0;
  
  if( tp.nbe()>0){
    nbi=2*tp.nbe();
    int c=0;
    Graphic* res = new Graphic( Graphic::E_LINE, nbi, nbi);
    foreach(Edge* e, tp.edges()) { 
      res->vertices[3*c]  =e->source()->x();
      res->vertices[3*c+1]=e->source()->y();
      res->vertices[3*c+2]=e->source()->z();
      c++;
      res->vertices[3*c]  =e->destination()->x();
      res->vertices[3*c+1]=e->destination()->y();
      res->vertices[3*c+2]=e->destination()->z();
      c++;
      res->indices[c-2]=c-1;
      res->indices[c-1]=c-2;
    }
    return res;
  }
  return NULL;
}
use<tpl3d_def,V>::Graphic* mmx::shape::as_graphic ( const tpl3d< C, V > &  tp)

Definition at line 290 of file tpl3d.hpp.

References as_graphic().

use<tpl3d_def,V>::Graphic* mmx::shape::as_graphic ( const mesher3d_shape< C, V > &  tp)

Definition at line 172 of file mesher3d_shape.hpp.

References as_graphic().

T at ( list< T >  l,
int  p 
)

Definition at line 41 of file list.hpp.

{
    typename list<T>::iterator it = l.begin() ;
    for(int i = 0 ; i < p ; it++, i++) ;
    return *it ;
}
void mmx::shape::cell3d_split ( CELL *  left,
CELL *  right,
CELL *  cl,
int  v,
double  s 
) [inline]

Definition at line 555 of file cell3d.hpp.

                                                                   {
 if(v==0) {
   left = new CELL(*cl);
   right = new CELL(*cl);
   left->set_xmax(s);
   right->set_xmin(s);
   cl->connect0(left,right);
   left->join0(right);
 } else if (v==1) {
   left = new CELL(*cl);
   right = new CELL(*cl);
   left->set_ymax(s);
   right->set_ymin(s);
   cl->connect1(left,right);
   left->join2(right);
 } else if (v==2) {
   left = new CELL(*cl);
   right = new CELL(*cl);
   left->set_zmax(s);
   right->set_zmin(s);
   cl->connect2(left,right);
   left->join2(right);
 }
}
bool mmx::shape::check_overlap ( cell2d< C, V > *  a,
cell2d< C, V > *  b,
int  v 
) [inline]

Definition at line 411 of file cell2d.hpp.

Referenced by cell3d< C, V >::connect0(), cell2d< C, V >::connect0(), cell3d< C, V >::connect1(), cell2d< C, V >::connect1(), and cell3d< C, V >::connect2().

{// check if a,b overlap wrt v-th coordinate
    if (v==0)  //direction v=0
        return !( a->xmax()<= b->xmin() ||
                  b->xmax()<= a->xmin() );
    else       //direction v=1
        return !( a->ymax()<= b->ymin() ||
                  b->ymax()<= a->ymin() );
}
bool mmx::shape::check_overlap ( cell3d< C, V > *  a,
cell3d< C, V > *  b,
int  v 
) [inline]

Definition at line 539 of file cell3d.hpp.

{// check if a,b overlap wrt v-th coordinate
    if (v==0)  //direction v=0
      return !( a->xmax()<= b->xmin() ||
                b->xmax()<= a->xmin() );
    if (v==1)  //direction v=1
      return !( a->ymax()<= b->ymin() ||
                b->ymax()<= a->ymin() );
    if (v==2)  //direction v=2
      return !( a->zmax()<= b->zmin() ||
                b->zmax()<= a->zmin() );
    return false;
}
mmx::shape::DECLARE_REF_OF ( AXEL  ,
AXEL   
)
mmx::shape::DECLARE_REF_OF ( MGXK  ,
MGXK   
)
mmx::shape::DECLARE_REF_OF ( integer  ,
MGXK   
)
mmx::shape::DECLARE_REF_OF ( rational  ,
MGXK   
)
mmx::shape::DECLARE_REF_OF ( floating<>  ,
MGXK   
)
mmx::shape::DECLARE_REF_OF ( with_color< V >  ,
with_color< REF_OF(V)>   
)
mmx::shape::DECLARE_REF_OF ( with_tpl3d< K >  ,
REF_OF(K)   
)
point<C,V,N>::Scalar mmx::shape::distance ( const point< C, V, N > &  p1,
const point< C, V, N > &  p2 
) [inline]

Definition at line 177 of file point.hpp.

Referenced by cell3d_algebraic_curve< C, V >::check_insert().

                                                                          {
  typename SELF::Scalar d=0;
  d += (p1.x()-p2.x())*(p1.x()-p2.x());
  d += (p1.y()-p2.y())*(p1.y()-p2.y());
  d += (p1.z()-p2.z())*(p1.z()-p2.z());
  return std::sqrt(d);
}
bool mmx::shape::eq ( const shape::ImplicitCurve &  v1,
const shape::ImplicitCurve &  v2 
) [inline]

Definition at line 30 of file glue_implicit_curve.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::point< C > &  v1,
const shape::point< C > &  v2 
) [inline]

Definition at line 28 of file point_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::point_set< C, shape::with_color< V > > &  v1,
const shape::point_set< C, shape::with_color< V > > &  v2 
) [inline]

Definition at line 23 of file point_set_with_color_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::color< shape::MGXK > &  v1,
const shape::color< shape::MGXK > &  v2 
) [inline]

Definition at line 25 of file color_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::algebraic_curve< rational, shape::MGXK > &  v1,
const shape::algebraic_curve< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 31 of file algebraic_curve_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::viewer< shape::axel, K > &  v1,
const shape::viewer< shape::axel, K > &  v2 
) [inline]

Definition at line 21 of file axel_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::bounding_box< double, shape::MGXK > &  v1,
const shape::bounding_box< double, shape::MGXK > &  v2 
) [inline]

Definition at line 26 of file bounding_box_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::curve_rational< rational, shape::MGXK > &  v1,
const shape::curve_rational< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 39 of file curve_rational_glue.hpp.

{return v1==v2;}
bool mmx::shape::exact_eq ( const shape::surface_algebraic< rational, shape::MGXK > &  v1,
const shape::surface_algebraic< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 33 of file surface_algebraic_glue.hpp.

{return v1==v2;}
unsigned mmx::shape::exact_hash ( const shape::algebraic_curve< rational, shape::MGXK > &  m) [inline]

Definition at line 40 of file algebraic_curve_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::bounding_box< double, shape::MGXK > &  m) [inline]

Definition at line 35 of file bounding_box_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::viewer< shape::axel, K > &  m) [inline]

Definition at line 30 of file axel_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::point< C > &  m) [inline]

Definition at line 37 of file point_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::color< shape::MGXK > &  m) [inline]

Definition at line 34 of file color_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::point_set< C, shape::with_color< V > > &  m) [inline]

Definition at line 32 of file point_set_with_color_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::curve_rational< rational, shape::MGXK > &  m) [inline]

Definition at line 48 of file curve_rational_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::exact_hash ( const shape::surface_algebraic< rational, shape::MGXK > &  m) [inline]

Definition at line 42 of file surface_algebraic_glue.hpp.

References hash().

{return hash(m);}
bool mmx::shape::exact_neq ( const shape::viewer< shape::axel, K > &  v1,
const shape::viewer< shape::axel, K > &  v2 
) [inline]

Definition at line 22 of file axel_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::point< C > &  v1,
const shape::point< C > &  v2 
) [inline]

Definition at line 29 of file point_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::color< shape::MGXK > &  v1,
const shape::color< shape::MGXK > &  v2 
) [inline]

Definition at line 26 of file color_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::algebraic_curve< rational, shape::MGXK > &  v1,
const shape::algebraic_curve< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 32 of file algebraic_curve_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::point_set< C, shape::with_color< V > > &  v1,
const shape::point_set< C, shape::with_color< V > > &  v2 
) [inline]

Definition at line 24 of file point_set_with_color_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::curve_rational< rational, shape::MGXK > &  v1,
const shape::curve_rational< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 40 of file curve_rational_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::surface_algebraic< rational, shape::MGXK > &  v1,
const shape::surface_algebraic< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 34 of file surface_algebraic_glue.hpp.

{return v1!=v2;}
bool mmx::shape::exact_neq ( const shape::bounding_box< double, shape::MGXK > &  v1,
const shape::bounding_box< double, shape::MGXK > &  v2 
) [inline]

Definition at line 27 of file bounding_box_glue.hpp.

{return v1!=v2;}
Seq<typename topology<C,V>::Point *> mmx::shape::extremal ( const algebraic_curve< C, V > &  c,
const bounding_box< C, V > &  b 
)

Definition at line 32 of file algebraic_curve_fcts.hpp.

References solver_implicit< C, V >::extremal().

                                               {
  typedef typename topology<C,V>::Point Point;
  Seq<Point*> res;
  solver_implicit<C,V>::extremal(res,c.equation(),b);
  return res;
}
void mmx::shape::face_refine ( face< C, V, POINT > *  f0,
face< C, V, POINT > *  f1,
double  s,
int  v 
)

Definition at line 235 of file face.hpp.

                                                 {

  typedef typename SELF::Point Point;
  Seq<Point*> l1;
  for(unsigned j=0;j<3;j++)
        if ( ((*f1->points(j))[v]==s) )
          for(unsigned i=0;i<3;i++) {
              if ( ((*f0->points(i))[v]==s) && 
                   (i+1<f0->size()) && 
                   ((*f0->points(i+1))[v]==s) ) {
                l1<<(f1->points(j));
              }
              if ( (i==(f0->size()-1)) && 
                   ((*f0->points(i))[v]==s) && 
                   ((*f0->points(0))[v]==s) ){
                l1<<(f1->points(j));
              }
            }
//  std::cout<<"Add "<<l1.size()<<" point(s) to face of size "<<f0->size()<<std::endl;
  foreach(Point* p1,l1) f0->insert(p1);
}
syntactic mmx::shape::flatten ( const shape::curve_rational< rational, shape::MGXK > &  s) [inline]

Definition at line 51 of file curve_rational_glue.hpp.

References flatten().

    {
      using namespace shape;
      
      syntactic res = "RationalCurve";
      return res;

      if(s.dimension()>1)
        return apply(res, mmx::flatten(s.numerator(0)), mmx::flatten(s.numerator(1)), mmx::flatten(s.denominator()));
      else
        return apply(res, mmx::flatten(s.numerator(0)), mmx::flatten(s.denominator()));
    }
syntactic mmx::shape::flatten ( const shape::bounding_box< double, shape::MGXK > &  s) [inline]

Definition at line 38 of file bounding_box_glue.hpp.

References flatten().

    {
      vector<syntactic> box;
      box<<mmx::flatten(s.xmin());
      box<<mmx::flatten(s.xmax());
      box<<mmx::flatten(s.ymin());
      box<<mmx::flatten(s.ymax());
      box<<mmx::flatten(s.zmin());
      box<<mmx::flatten(s.zmax());
      
      return mmx::flatten(box);
    }
syntactic mmx::shape::flatten ( const shape::ImplicitCurve &  s)

Definition at line 41 of file glue_implicit_curve.hpp.

References flatten().

    {
      using namespace shape;
      
      syntactic res = "ImplicitCurve";
      
      vector<syntactic> box;
      box<<mmx::flatten(s.boundingBox()->xmin());
      box<<mmx::flatten(s.boundingBox()->xmax());
      box<<mmx::flatten(s.boundingBox()->ymin());
      box<<mmx::flatten(s.boundingBox()->ymax());
      
      return apply(res, mmx::flatten(s.equation()), mmx::flatten(box));
      
    }
syntactic mmx::shape::flatten ( const shape::viewer< shape::axel, shape::MGXK > &  axl) [inline]

Definition at line 34 of file axel_glue.hpp.

    {
      return apply(syntactic("Axel"), syntactic(axl.file));
    } 
syntactic mmx::shape::flatten ( const shape::algebraic_curve< rational, shape::MGXK > &  s) [inline]

Definition at line 43 of file algebraic_curve_glue.hpp.

Referenced by flatten().

    {
      using namespace shape;
      
      syntactic res = "AlgebraicCurve";
      if(s.nbequation()>1)
        return apply(res, mmx::flatten(s.equation(0)), mmx::flatten(s.equation(1)));
      else
        return apply(res, mmx::flatten(s.equation(0)));
    }
syntactic mmx::shape::flatten ( const shape::point< C > &  p) [inline]

Definition at line 40 of file point_glue.hpp.

References flatten().

                                                   {
      vector<syntactic> v;
      v<<mmx::flatten(p[0]);
      v<<mmx::flatten(p[1]);
      v<<mmx::flatten(p[2]);
      
      return mmx::flatten(v);
    }
syntactic mmx::shape::flatten ( const shape::color< shape::MGXK > &  s) [inline]

Definition at line 37 of file color_glue.hpp.

References flatten().

                                              {
      syntactic res = "Color";
      return apply(res,
                   mmx::flatten(s.r), mmx::flatten(s.g), mmx::flatten(s.b));
      
    }
syntactic mmx::shape::flatten ( const shape::point_set< C, shape::with_color< V > > &  axl) [inline]

Definition at line 35 of file point_set_with_color_glue.hpp.

    {
      return apply(syntactic("ColorPointSet"), syntactic("..."));
    } 
syntactic mmx::shape::flatten ( const shape::surface_algebraic< rational, shape::MGXK > &  s)

Definition at line 45 of file surface_algebraic_glue.hpp.

References flatten().

    {
      using namespace shape;
      
      syntactic res = "AlgebraicSurface";
      
      return apply(res, mmx::flatten(s.equation()));
      
    }
unsigned mmx::shape::hash ( const shape::algebraic_curve< rational, shape::MGXK > &  v) [inline]

Definition at line 34 of file algebraic_curve_glue.hpp.

Referenced by exact_hash(), and soft_hash().

    {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::bounding_box< double, shape::MGXK > &  v) [inline]

Definition at line 29 of file bounding_box_glue.hpp.

    {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::viewer< shape::axel, K > &  v) [inline]

Definition at line 24 of file axel_glue.hpp.

                                              {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::ImplicitCurve &  v) [inline]

Definition at line 33 of file glue_implicit_curve.hpp.

    {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::curve_rational< rational, shape::MGXK > &  v) [inline]

Definition at line 42 of file curve_rational_glue.hpp.

    {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::point< C > &  v) [inline]

Definition at line 31 of file point_glue.hpp.

    {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::color< shape::MGXK > &  v) [inline]

Definition at line 28 of file color_glue.hpp.

                                          {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::point_set< C, shape::with_color< V > > &  v) [inline]

Definition at line 26 of file point_set_with_color_glue.hpp.

                                              {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
unsigned mmx::shape::hash ( const shape::surface_algebraic< rational, shape::MGXK > &  v) [inline]

Definition at line 36 of file surface_algebraic_glue.hpp.

    {
      register unsigned i, h= 214365, n=1;
      for (i=0; i<n; i++) h= (h<<1) ^ (h<<5) ^ (h>>27) ;//^ hash(v[i]);
      return h;
    }
int mmx::shape::indexof ( list< T >  l,
t 
)

Definition at line 33 of file list.hpp.

Referenced by remove().

{
    typename list<T>::iterator it = l.begin() ;
    for(int i = 0 ; it != l.end() ; it++, i++)
        if(*it == t) return i ;
    return -1 ;
}
void insert ( list< T > &  l,
int  p,
t 
)

Definition at line 48 of file list.hpp.

Referenced by mmx::GLUE_140(), mmx::GLUE_158(), mmx::GLUE_17(), topology< C, V >::insert(), and mesher3d_curve_algebraic< C, V >::insert().

{
    typename list<T>::iterator it = l.begin() ;
    for(int i = 1 ; i < p ; i++, it++) ;
    l.insert(it, t) ;
}
void mmx::shape::insert_bbx ( T *  t,
bounding_box< C, V > *  bx 
)

Definition at line 398 of file bounding_box.hpp.

References Edge.

                          {
  typedef typename T::Point Point;
  typedef typename T::Edge   Edge;
  Point 
    *p0= new Point(bx->xmin(),bx->ymin(),bx->zmin()),
    *p1= new Point(bx->xmin(),bx->ymax(),bx->zmin()),
    *p2= new Point(bx->xmax(),bx->ymax(),bx->zmin()),
    *p3= new Point(bx->xmax(),bx->ymin(),bx->zmin());
  t->insert(p0);t->insert(p1); t->insert(new Edge(p0,p1));
  t->insert(p1);t->insert(p2); t->insert(new Edge(p1,p2));
  t->insert(p2);t->insert(p3); t->insert(new Edge(p2,p3));
  t->insert(p3);t->insert(p0); t->insert(new Edge(p3,p0));
  
  Point 
    *q0= new Point(bx->xmin(),bx->ymin(),bx->zmax()),
    *q1= new Point(bx->xmin(),bx->ymax(),bx->zmax()),
    *q2= new Point(bx->xmax(),bx->ymax(),bx->zmax()),
    *q3= new Point(bx->xmax(),bx->ymin(),bx->zmax());
  t->insert(q0);t->insert(q1); t->insert(new Edge(q0,q1));
  t->insert(q1);t->insert(q2); t->insert(new Edge(q1,q2));
  t->insert(q2);t->insert(q3); t->insert(new Edge(q2,q3));
  t->insert(q3);t->insert(q0); t->insert(new Edge(q3,q0));
  
  t->insert(p0);t->insert(q0);t->insert(new Edge(p0,q0));
  t->insert(p1);t->insert(q1);t->insert(new Edge(p1,q1));
  t->insert(p2);t->insert(q2);t->insert(new Edge(p2,q2));
  t->insert(p3);t->insert(q3);t->insert(new Edge(p3,q3));
}
void mmx::shape::insert_bbx ( T *  t,
bounding_box< C, V > *  bx,
int  v,
int  s 
)

Definition at line 430 of file bounding_box.hpp.

References Edge.

                                        {
  typedef typename T::Point Point;
  typedef typename T::Edge   Edge;

  Point 
    *p0= new Point(bx->xmin(),bx->ymin(),bx->zmin()),
    *p1= new Point(bx->xmin(),bx->ymax(),bx->zmin()),
    *p2= new Point(bx->xmax(),bx->ymax(),bx->zmin()),
    *p3= new Point(bx->xmax(),bx->ymin(),bx->zmin());
  Point 
    *q0= new Point(bx->xmin(),bx->ymin(),bx->zmax()),
    *q1= new Point(bx->xmin(),bx->ymax(),bx->zmax()),
    *q2= new Point(bx->xmax(),bx->ymax(),bx->zmax()),
    *q3= new Point(bx->xmax(),bx->ymin(),bx->zmax());

  if(v==2) {
    if(s==0) {
      t->insert(p0);t->insert(p1); t->insert(new Edge(p0,p1));
      t->insert(p1);t->insert(p2); t->insert(new Edge(p1,p2));
      t->insert(p2);t->insert(p3); t->insert(new Edge(p2,p3));
      t->insert(p3);t->insert(p0); t->insert(new Edge(p3,p0));
    } else {
      t->insert(q0);t->insert(q1); t->insert(new Edge(q0,q1));
      t->insert(q1);t->insert(q2); t->insert(new Edge(q1,q2));
      t->insert(q2);t->insert(q3); t->insert(new Edge(q2,q3));
      t->insert(q3);t->insert(q0); t->insert(new Edge(q3,q0));
    }
  } else if(v==1) {
    if(s==0) {
      t->insert(p0);t->insert(q0);t->insert(new Edge(p0,q0));
      t->insert(q0);t->insert(q3);t->insert(new Edge(q0,q3));
      t->insert(q3);t->insert(p3);t->insert(new Edge(q3,p3));
      t->insert(p3);t->insert(p0);t->insert(new Edge(p3,p0));
    } else {
      t->insert(p1);t->insert(q1);t->insert(new Edge(p1,q1));
      t->insert(q1);t->insert(q2);t->insert(new Edge(q1,q2));
      t->insert(q2);t->insert(p2);t->insert(new Edge(q2,p2));
      t->insert(p2);t->insert(p1);t->insert(new Edge(p2,p1));
    }
  } else if (v==0) {
    if(s==0) {
      t->insert(p0);t->insert(q0);t->insert(new Edge(p0,q0));
      t->insert(q0);t->insert(q1);t->insert(new Edge(q0,q1));
      t->insert(q1);t->insert(p1);t->insert(new Edge(p1,q1));
      t->insert(p1);t->insert(p0);t->insert(new Edge(p1,p0));
    } else {
      t->insert(p2);t->insert(q2);t->insert(new Edge(p2,q2));
      t->insert(q2);t->insert(q3);t->insert(new Edge(q2,q3));
      t->insert(q3);t->insert(p3);t->insert(new Edge(p3,q3));
      t->insert(p3);t->insert(p2);t->insert(new Edge(p3,p2));
    }
  }
}
shape::edge_set<K>* mmx::shape::intersection ( shape::surface_parametric< K > *  srfa,
shape::surface_parametric< K > *  srfb 
)

Definition at line 17 of file ssi_surface_parametric.hpp.

References Edge, EdgeSet, and SSIQTSL::spcs.

Referenced by intersection2d_factory< C, V >::compute(), and mmx::solve_cf().

{
    typedef typename EdgeSet::Point         Point;
    typedef typename EdgeSet::Edge          Edge;
    typedef typename EdgeSet::PointIterator PointIterator;

    SSIQTSL ssi( srfa, srfb, 100 );

    int nbv =ssi.spcs.size();

    EdgeSet * result = new EdgeSet(nbv);
    //    IntersectionResult * result = new IntersectionResult(IGLGood::E_LINE,ssi.spcs.size(),ssi.spcs.size());

    //std::copy(ssi.spcs.begin(),ssi.spcs.end(),(fxv<double,3>*)(result->glg->vertices));
    PointIterator p=result->begin();
    for ( int i = 0; i < nbv; i ++, p++ ) {
      p->setx(ssi.spcs[i][0]);
      p->sety(ssi.spcs[i][1]);
      p->setz(ssi.spcs[i][2]);
    }

    Point * p1, * p2;
    for ( int i = 0; i < nbv; i+=2) {
      p1= &result->vertex(i);
      p2= &result->vertex(i+1);
      result->push_edge(new Edge(p1,p2));
    }
    //  result->glg->indexes[i] = i;

    return result;
};
bool mmx::shape::is_adjacentpl3d ( CELL *  c1,
CELL *  c2 
)

Definition at line 581 of file cell3d.hpp.

Referenced by dualize< C, V, Shape, Cell >::get_dual_edge(), and dualize< C, V, Shape, Cell >::get_dual_face().

                                  {
  if(c1->xmax()<c2->xmin() || c2->xmax()<c1->xmin())
    return false;
  if(c1->ymax()<c2->ymin() || c2->ymax()<c1->ymin())
    return false;
  if(c1->zmax()<c2->zmin() || c2->zmax()<c1->zmin())
    return false;
  if((c1->xmax()==c2->xmin() || c2->xmax()==c1->xmin())) {
    if((c1->ymax()==c2->ymin() || c2->ymax()==c1->ymin()) ||
       (c1->zmax()==c2->zmin() || c2->zmax()==c1->zmin()) )
      return false;
  } else if((c1->ymax()==c2->ymin() || c2->ymax()==c1->ymin()) &&
            (c1->zmax()==c2->zmin() || c2->zmax()==c1->zmin()) )
    return false;
  return true;
}
bool mmx::shape::is_adjacentpl3d ( CELL *  c1,
CELL *  c2,
CELL *  c3 
)

Definition at line 606 of file cell3d.hpp.

References xMAX, xMIN, yMAX, yMIN, zMAX, and zMIN.

                                            {

  if(c1->xmax()< xMIN || xMAX <c1->xmin())
    return false; 
  if(c1->ymax()<yMIN || yMAX<c1->ymin())
    return false;
  if(c1->zmax()<zMIN || zMAX<c1->zmin())
    return false;

  if((c1->xmax()==xMIN || xMAX==c1->xmin())) {
    if((c1->ymax()==yMIN || yMAX==c1->ymin()) ||
       (c1->zmax()==zMIN || zMAX==c1->zmin()) )
      return false;
  } else if((c1->ymax()==yMIN || yMAX==c1->ymin()) &&
            (c1->zmax()==zMIN || zMAX==c1->zmin()) )
    return false;
  return true;
}
double mmx::shape::lower ( const bounding_box< C, V > &  bx,
int  v 
) [inline]

Definition at line 113 of file bounding_box.hpp.

Referenced by solver_implicit< C, V >::common_edge_point(), mmx::create_curve_rational(), solver_implicit< C, V >::edge_point(), plot(), and point_on_edge().

                             {
  switch(v) {
  case 0:
    return bx.xmin(); break ;
  case 1:
    return bx.ymin(); break ;
    default:
      return bx.zmin(); break ;
  }
} 
double mmx::shape::lower ( double  x) [inline]

Definition at line 32 of file solver_implicit.hpp.

{return x;}
curve_pl<C, REF_OF(V) >* mmx::shape::mesh ( parametric_curve< C, V > *  pc)

Definition at line 93 of file parametric_curve.hpp.

References Edge, and PLCurve.

                 {
  typedef typename PLCurve::Edge Edge;
  int n = 500;
  PLCurve* res = new PLCurve;//n,n-1,0,0,false);
  pc->sample(res->begin(), n);
  for ( int i = 0; i < n-1; i ++ ) {
    res->push_edge(new Edge(&res->vertex(i),&res->vertex(i+1)));
  }
  return res;
}
double mmx::shape::mmxmax ( double  a,
double  b 
) [inline]
double mmx::shape::mmxmin ( double  a,
double  b 
) [inline]
bool mmx::shape::neq ( const shape::ImplicitCurve &  v1,
const shape::ImplicitCurve &  v2 
) [inline]

Definition at line 31 of file glue_implicit_curve.hpp.

{return v1!=v2;}
bool mmx::shape::operator!= ( const shape::algebraic_curve< rational, shape::MGXK > &  v1,
const shape::algebraic_curve< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 30 of file algebraic_curve_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::ImplicitCurve &  v1,
const shape::ImplicitCurve &  v2 
) [inline]

Definition at line 29 of file glue_implicit_curve.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::point< C > &  v1,
const shape::point< C > &  v2 
) [inline]

Definition at line 27 of file point_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::color< shape::MGXK > &  v1,
const shape::color< shape::MGXK > &  v2 
) [inline]

Definition at line 24 of file color_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::point_set< C, shape::with_color< V > > &  v1,
const shape::point_set< C, shape::with_color< V > > &  v2 
) [inline]

Definition at line 21 of file point_set_with_color_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::viewer< shape::axel, K > &  v1,
const shape::viewer< shape::axel, K > &  v2 
) [inline]

Definition at line 19 of file axel_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::bounding_box< double, shape::MGXK > &  v1,
const shape::bounding_box< double, shape::MGXK > &  v2 
) [inline]

Definition at line 25 of file bounding_box_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::curve_rational< rational, shape::MGXK > &  v1,
const shape::curve_rational< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 38 of file curve_rational_glue.hpp.

{return !(v1==v2);}
bool mmx::shape::operator!= ( const shape::surface_algebraic< rational, shape::MGXK > &  v1,
const shape::surface_algebraic< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 32 of file surface_algebraic_glue.hpp.

{return !(v1==v2);}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
int  s 
) [inline]

Definition at line 159 of file viewer_axel.hpp.

References viewer< axel, V >::vw.

  {
    os.vw<<s;return os;
  }
AXEL& mmx::shape::operator<< ( AXEL &  out,
const surface_rational< K, N > &  c 
)

Definition at line 112 of file surface_rational.hpp.

References print().

                                     {
  out<<"\n <surface type=\"rational\">\n";
  out<<"   <domain>"<< c.umin()<<" "<<c.umax()<<" "<<c.vmin()<<" "<<c.vmax()<<"</domain>\n";
  for(int i=0; i<N;i++){
    out<<"   <polynomial>";
    print(out,c.numerator(i),variables("t"));
    out<<"</polynomial>\n";
  }
  out<<"   <polynomial>";
  print(out,c.denominator(),variables("t"));
  out<<"</polynomial>\n";
  out<<" </surface>\n";
  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  out,
const tpl3d< C, V > &  tp 
)

Definition at line 284 of file tpl3d.hpp.

                                        {
  use<tpl3d_def,V>::print_as_graphic(out,tp);
  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  out,
const edge_set< C, V > &  s 
)

Definition at line 147 of file edge_set.hpp.

References Edge.

                                       {
  typedef typename SELF::Edge Edge;
  out<<" <curve type=\"mesh\">\n<vect>\nVECT\n";
  out<<s.nbe()<<" "
     <<2*s.nbe()<<" "
     <<s.nbe()<<"\n";
  for(unsigned i=0; i<s.nbe();i++) out<<"2 ";
  out<<"\n";
  for(unsigned i=0; i<2*s.nbe();i++) out<<"1 ";
  out<<"\n";
  foreach(Edge* e, s.edges()) {
    out <<e->source()->x()<<" "
        <<e->source()->y()<<" "
        <<e->source()->z()<<" "
        <<e->destination()->x()<<" "
        <<e->destination()->y()<<" "
        <<e->destination()->z()<<"\n";
  }
  for(unsigned i=0; i<s.nbe();i++) 
    out<< "0.98 0.05 0.05 1\n";
  out<<" </vect>\n </curve>\n";
  return out;
}
viewer<axel,I>& mmx::shape::operator<< ( viewer< axel, I > &  out,
face< C, V, POINT > *  p 
)

Definition at line 210 of file face.hpp.

References viewer< axel, V >::color.

                                 {
  using namespace shape;
  
  out<<"<domain type=\"mesh\" name=\"face_"
     << p->get_index()<<"\"color=\""
     << out.color.r   <<" "
     << out.color.g   <<" "
     << out.color.r   <<"\">\n";
  
  out<<"<off>\n";
  out<<p->size()<<" "<<1<<" "<<0<<"\n";
  //foreach(Point* pt, *p)
  for (unsigned i=0;i<p->size();i++)
    {
      out<<(*p)[i]->x()<<" "<<(*p)[i]->y()<<" "<<(*p)[i]->z()<<"\n";
    }
  out<<p->size();
  for (unsigned i=0;i<p->size();i++)
    out<<" "<<i;
  out<<"\n</off>\n";
  out<<"</domain>\n";
  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const char *  s 
) [inline]

Definition at line 144 of file viewer_axel.hpp.

References viewer< axel, V >::vw.

  {
    os.vw<<s; return os;
  }
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const std::string &  s 
) [inline]

Definition at line 149 of file viewer_axel.hpp.

References viewer< axel, V >::vw.

  {
    os.vw<<s; return os;
  }
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
double  s 
) [inline]

Definition at line 164 of file viewer_axel.hpp.

References viewer< axel, V >::vw.

  {
    os.vw<<s;return os;
  }
std::ostream& mmx::shape::operator<< ( std::ostream &  os,
const color< K > &  c 
) [inline]

Definition at line 42 of file color.hpp.

{
  os <<"Color("<<c.r<<","<<c.g<<","<<c.b<<")"; return os;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const bounding_box< double, V > &  bx 
)

Definition at line 170 of file viewer_axel.hpp.

                                              {
    for(unsigned i=0;i<3;i++)
      for(unsigned j=0;j<2;j++)
        os(i,j)=bx(i,j);
    return os;
  }
viewer<V>& mmx::shape::operator<< ( viewer< V > &  out,
const voronoi2d< C, V > &  tp 
)

Definition at line 686 of file voronoi2d.hpp.

References VoronoiSite2d.

                                        {

  foreach(Shape* vs, tp.m_objects)
  {
    out<<" <point color=\"255 127 0\"> "<<
      ((VoronoiSite2d *)vs)->x() << " "<<
      ((VoronoiSite2d *)vs)->y() << " "<<
      ((VoronoiSite2d *)vs)->z() << "</point>\n";
  }

  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  out,
const topology2d< C, V > &  tp 
)

Definition at line 422 of file topology2d.hpp.

References Edge, and SELF.

                                        {
  typedef SELF                        Topology2d;
  typedef typename Topology2d::Point  Point;
  typedef typename Topology2d::Edge   Edge; 
  //shape::edge<K>     Edge;
  //
  
  foreach(Point* p, tp.m_specials) out<<(*p)<<"\n";
  
  out<<" <curve type=\"mesh\">\n<vect>\nVECT\n";
  out<<tp.nbe()<<" "
     <<2*tp.nbe()<<" "
     <<tp.nbe()<<"\n";
  
  for(int i=0; i<tp.nbe();i++) out<<"2 ";
  out<<"\n";
  for(int i=0; i<tp.nbe();i++) out<<"1 ";
  out<<"\n";
  foreach(Edge* e, tp.edges()) {
    out <<e->source()->x()<<" "<<e->source()->y()<<" 0 "
        <<e->destination()->x()<<" "<<e->destination()->y()<<" 0 "
        <<"\n";
  }
  for(int i=0; i<tp.nbe();i++) 
    out<< "0.314 0.979 1 1\n";
  
  out<<" </vect>\n </curve>\n";
  
  return out;
}
void operator<< ( list< T > &  l,
t 
)

Definition at line 74 of file list.hpp.

{
    l.push_back(t) ;
}
viewer<V>& mmx::shape::operator<< ( viewer< V > &  out,
const mesher3d_shape< C, V > &  tp 
)

Definition at line 166 of file mesher3d_shape.hpp.

                                        {
  use<tpl3d_def,V>::print_as_graphic(out,tp);
  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  out,
const curve_pl< C, V > *  s 
)

Definition at line 125 of file curve_pl.hpp.

References Edge.

                                       {
  typedef typename SELF::Edge Edge;
  out<<" <curve type=\"mesh\">\n<vect>\nVECT\n";
  out<<s->nbe()<<" "
     <<s->nbv()<<" "
     <<s->nbe()<<"\n";
  for(unsigned i=0; i<s->nbe();i++) out<<"2 ";
  out<<"\n";
  for(unsigned i=0; i<s->nbv();i++) out<<"1 ";
  out<<"\n";
  foreach(Edge* e, s->edges()) {
    out <<e->source()->x()<<" "
        <<e->source()->y()<<" "
        <<e->source()->z()<<" "
        <<e->destination()->x()<<" "
        <<e->destination()->y()<<" "
        <<e->destination()->z()<<"\n";
  }
  for(unsigned i=0; i<s->nbe();i++) 
    out<< "0.314 0.979 1 1\n";
  out<<" </vect>\n </curve>\n";
  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const typename viewer< axel, V >::Color c 
) [inline]

Definition at line 178 of file viewer_axel.hpp.

References viewer< axel, V >::color.

                                                    {
    os.color.r=c.r;
    os.color.g=c.g;
    os.color.b=c.b;
    return os;
  }
std::ostream& mmx::shape::operator<< ( std::ostream &  os,
const Width &  c 
) [inline]

Definition at line 27 of file width.hpp.

References Width::nb, and Width::sz.

{
  os <<"Width("<<c.sz<<","<<c.nb<<")"; return os;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const graphic< C, W > &  s 
)

Definition at line 186 of file viewer_axel.hpp.

References point().

  {
    if (s.type == 0) {
      os <<"<pointset  size=\""<<s.nbv<<"\" color=\"rgb\">\n";
      for(unsigned i =0;i<s.nbv;i++)
        os<<s.vertices[3*i]<<" "<<s.vertices[3*i+1]<<" "<<s.vertices[3*i+2]
          <<" 255 75 75\n";
      os <<"</pointset>\n";
    } else if (s.type == 1) {
      typedef fxv<double,3> point;
      point * P = (point*)(s.vertices);
      int   * Vs = (s.indices);
      os <<"<curve type=\"mesh\">\n<vect>\n";
      os <<"VECT\n";
      os <<s.nbi/2 << " " << s.nbi <<" "<<s.nbi/2<<"\n";
      for(unsigned i =0;i<s.nbi/2;i++)
        os<<"2 "; os<<"\n";
      for(unsigned i =0;i<s.nbi/2;i++)
        os<<"1 "; os<<"\n";
      
      for(unsigned i=0;i<s.nbi/2 ;i++) {
        os << P[Vs[2*i]][0]   <<" "<< P[Vs[2*i]][1] <<" "<< P[Vs[2*i]][2] <<" ";
        os << P[Vs[2*i+1]][0] <<" "<< P[Vs[2*i+1]][1] <<" "<< P[Vs[2*i+1]][2];
        os << "\n";
      }
      for(unsigned i =0;i<s.nbi/2;i++)
        os<<os.color.r<<" "<<os.color.g<<" "<<os.color.b<<" "<<"1\n";
      os <<"</vect>\n</curve>\n";
    } else if (s.type == 2) {
      std::cout<<"Surface"<<std::endl;
      typedef fxv<double,3> point;
      int   * Vs = (s.indices);
      os <<"<surface type=\"mesh\">\n<off>\n";
      os <<s.nbv<<" "<<s.nbi/3<<" 0\n";
      for(unsigned i=0;i<s.nbv;i++)
        os<<s.vertices[3*i]<<" "<<s.vertices[3*i+1]<<" "<<s.vertices[3*i+2] <<"\n";
      
      for(unsigned i=0;i<s.nbi/3;i++)
        os <<"3 "<< Vs[3*i]   <<" "<< Vs[3*i+1] <<" "<< Vs[3*i+2] <<"\n";
      os <<"</off>\n</surface>\n";
    }
    return os;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const surface_algebraic< C, V > &  s 
)

Definition at line 78 of file surface_algebraic.hpp.

                                      {
  os<<"<surface type=\"implicit\" color=\""
    <<int(os.color.r*255)<<" "
    <<int(os.color.g*255)<<" "
    <<int(os.color.b*255)<<"\">\n";
  os<<"  <domain>"
    <<os(0,0)<<" "<<os(0,1)<<" "
    <<os(1,0)<<" "<<os(1,1)<<" "
    <<os(2,0)<<" "<<os(2,1)
    <<"</domain>\n";
  os<<"  <polynomial>";
  print_as_double(os,s.equation().rep(),variables("x y z"));
  os<<"</polynomial>\n";
  os<<"</surface>\n";
  return os;
}
std::ostream& mmx::shape::operator<< ( std::ostream &  stream,
const bounding_box< C, V > &  c 
)

Definition at line 368 of file bounding_box.hpp.

References bounding_box< C, V >::xmin().

                                                 {
  if(c.is0D())
    return stream << "[]" ;
  else if(c.is1D())
    return stream << "[" << c.xmin() << ", " << c.xmax() << "]" ;
  else if(c.is2D())
    return stream << "[" << c.xmin() << ", " << c.xmax() << "] x [" << c.ymin() << ", " << c.ymax() << "]" ;
  else if(c.is3d())
    return stream << "[" << c.xmin() << ", " << c.xmax() << "] x [" << c.ymin() << ", " << c.ymax() << "] x [" << c.zmin() << ", " << c.zmax() << "]" ;
  else
    return stream << "???" ;
}
std::ostream& mmx::shape::operator<< ( std::ostream &  os,
const point< C, V, N > &  p 
)

Definition at line 187 of file point.hpp.

                                       {
  os <<p.x()<<(char *)" "<<p.y()<<(char *)" "<<p.z();
  return os;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const algebraic_curve< C, V > &  c 
)

Definition at line 101 of file algebraic_curve.hpp.

References AlgebraicCurve, Polynomial, print(), and SELF.

                                      {
  typedef SELF  AlgebraicCurve;
  typedef typename  AlgebraicCurve::Polynomial Polynomial;
  os<<"<curve type=\"implicit\" color=\""<<(int)(255*os.color.r)<<" "<<(int)(255*os.color.g)<<" "<<(int)(255*os.color.b)<<"\">\n";
  os<<"  <domain>"
    <<os(0,0)<<" "<<os(0,1)<<" "
    <<os(1,0)<<" "<<os(1,1)<<" "
    <<os(2,0)<<" "<<os(2,1)
    <<"</domain>\n";
  for(unsigned i=0; i<c.equations().size();i++)
    {
      typename use<numeric_def,V>::Integer m=1;
      Polynomial p=c.equation(i);
      for(typename Polynomial::const_iterator it=p.begin();it!=p.end();it++){
        m = lcm(denominator(it->coeff()), m);
      }
      p*=(typename Polynomial::Scalar)m;
      os<<(char*)"  <polynomial>";
      print(os,p,variables("x y z"));
      os<<(char*)"</polynomial>\n";
    }
  os<<"</curve>\n";
  return os;
}
viewer<axel, K>& mmx::shape::operator<< ( viewer< axel, K > &  out,
const Graph< T > &  g 
)

Definition at line 765 of file graph.hpp.

                                           {
  

  //Seq<T> vertices;

  if (g.nbe()==0) return out;
  
  Seq<T> edges;
  g.edge_list(edges);
  
  out<<" <curve type=\"mesh\">\n<vect>\nVECT\n";
  out<<g.nbe()<<" "
    //<<g.nbv()<<" "
     <<2*g.nbe()<<" "
     <<g.nbe()<<"\n";
  
  for(unsigned i=0; i<g.nbe();i+=2) out<<"2 ";//
  out<<"\n";
  
  // for(unsigned i=0; i<g.nbv();i++) out<<"1 ";
  // out<<"\n";
  for(unsigned i=0; i<g.nbe();i+=2) out<<"1 ";//
  out<<"\n";

  //g.dfs( vertices );
  //print edges
  // unsigned i;
  // for (i=1;i<vertices.size(); i++)
  // {
  //            out <<vertices[i-1]->x()<<" "<<vertices[i-1]->y()  <<" 0 "
  //                            <<vertices[i]->x()  <<" "<<vertices[i]->y()<<" 0 "
  //                            <<"\n";
  // }
  //            out <<vertices[i-1]->x()<<" "<<vertices[i-1]->y()  <<" 0 "
  //                            <<vertices[0]->x()  <<" "<<vertices[0]->y()<<" 0 "
  //                            <<"\n";
  
      
  //print edges
  for (unsigned i=0;i<edges.size(); i+=2)
    {
      out <<edges[i]->x()  <<" "<<edges[i]->y()  <<" 0 "
          <<edges[i+1]->x()<<" "<<edges[i+1]->y()<<" 0 "
          <<"\n";
    }
  
  
  for(unsigned i=0; i<g.nbe();i++) 
    out<< "0.314 0.979 1 1\n";
  
  out<<" </vect>\n </curve>\n";
  
  return out;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
char  s 
) [inline]

Definition at line 139 of file viewer_axel.hpp.

References viewer< axel, V >::vw.

  {
    os.vw.put(s); return os;
  }
viewer<axel,W>& mmx::shape::operator<< ( viewer< axel, W > &  out,
const point_set< C, V > &  ps 
)

Definition at line 104 of file point_set.hpp.

                                        {
  using namespace shape;
  
  typedef typename SELF::Point Point;
  typedef typename SELF::PointConstIterator PointIterator;
  
  if(ps.nbv()>0) {
    out<<"<pointset size=\""<<ps.nbv()<<"\" color=\"rgb\">\n";
    for(PointIterator p= ps.begin();  p != ps.end(); p++) {
      use<point_def,V>::print_with_color(out, *p);
      out <<"\n";
    }
    out<<" </pointset>\n ";
  }
  return out;
}
viewer<axel,W>& mmx::shape::operator<< ( viewer< axel, W > &  os,
const point< C, V, N > &  p 
)

Definition at line 195 of file point.hpp.

                                      {
  os<<"<point color=\""<<(int)(255*os.color.r)<<" "<<(int)(255*os.color.g)<<" "<<(int)(255*os.color.b)<<"\">"
    <<p.x()<<" "<<p.y()<<" "<<p.z()
    <<"</point>\n";
  return os;
}
shape::point_set<C,shape::with_color<V> >& mmx::shape::operator<< ( shape::point_set< C, shape::with_color< V > > &  s,
const vector< generic > &  v 
) [inline]

Definition at line 41 of file point_set_with_color_glue.hpp.

                                                        {
      typedef typename SELF::Point Point;
      typedef mmx::shape::color<V> Color;
      shape::point<floating<>, shape::MGXK> P= as< shape::point<floating<>, shape::MGXK> >(v[0]);
      Point p(as<double>(P[0]),as<double>(P[1]),as<double>(P[2]),as<Color>(v[1])) ;
      s.push(p);
      return s;
    } 
curve_pl<C,V>& mmx::shape::operator<< ( curve_pl< C, V > &  c,
const typename curve_pl< C, V >::Edge &  e 
)

Definition at line 118 of file curve_pl.hpp.

                                                {
  c.m_edges<< e;
  return c;
}
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
unsigned  s 
) [inline]

Definition at line 154 of file viewer_axel.hpp.

References viewer< axel, V >::vw.

  {
    os.vw<<s;return os;
  }
viewer<axel,V>& mmx::shape::operator<< ( viewer< axel, V > &  os,
const curve_rational< C, V > &  c 
)

Definition at line 162 of file curve_rational.hpp.

References print().

                                    {
  os<<"\n <curve type=\"rational\"  color=\""<<(int)(255*os.color.r)<<" "<<(int)(255*os.color.g)<<" "<<(int)(255*os.color.b)<<"\">\n";
  os<<"   <domain>"<< c.tmin()<<" "<<c.tmax()<<"</domain>\n";
  for(int i=0; i<c.dimension();i++){
    os<<"   <polynomial>";
    print(os,c.numerator(i),variables("t"));
    os<<"</polynomial>\n";
  }
  os<<"   <polynomial>";
  print(os,c.denominator(),variables("t"));
  os<<"</polynomial>\n";
  os<<" </curve>\n";
  return os;
}
std::ostream& mmx::shape::operator<< ( std::ostream &  os,
const viewer< axel, V > &  g 
) [inline]

Definition at line 134 of file viewer_axel.hpp.

References viewer< axel, V >::file.

  {
    os <<"Axel("<<g.file<<")"; return os;
  }
bool mmx::shape::operator== ( const shape::surface_algebraic< rational, shape::MGXK > &  v1,
const shape::surface_algebraic< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 31 of file surface_algebraic_glue.hpp.

{return v1.equation()==v2.equation();}
bool mmx::shape::operator== ( const shape::algebraic_curve< rational, shape::MGXK > &  v1,
const shape::algebraic_curve< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 29 of file algebraic_curve_glue.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::point_set< C, shape::with_color< V > > &  v1,
const shape::point_set< C, shape::with_color< V > > &  v2 
) [inline]

Definition at line 20 of file point_set_with_color_glue.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::ImplicitCurve &  v1,
const shape::ImplicitCurve &  v2 
) [inline]

Definition at line 28 of file glue_implicit_curve.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::curve_rational< rational, shape::MGXK > &  v1,
const shape::curve_rational< rational, shape::MGXK > &  v2 
) [inline]

Definition at line 37 of file curve_rational_glue.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::point< C > &  v1,
const shape::point< C > &  v2 
) [inline]

Definition at line 26 of file point_glue.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::color< shape::MGXK > &  v1,
const shape::color< shape::MGXK > &  v2 
) [inline]

Definition at line 23 of file color_glue.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::viewer< shape::axel, K > &  v1,
const shape::viewer< shape::axel, K > &  v2 
) [inline]

Definition at line 18 of file axel_glue.hpp.

{return true;}
bool mmx::shape::operator== ( const shape::bounding_box< double, shape::MGXK > &  v1,
const shape::bounding_box< double, shape::MGXK > &  v2 
) [inline]

Definition at line 24 of file bounding_box_glue.hpp.

{return true;}
point_set<C,V> mmx::shape::plot ( const algebraic_curve< C, V > &  c,
const bounding_box< C, V > &  bx,
int  N = 500 
)

Definition at line 40 of file algebraic_curve_fcts.hpp.

References lower(), PointSet, Polynomial, mmx::solve(), Solver, and upper().

                                                        {
  
  typedef double                      Scalar;
  typedef typename PointSet::Point    Point;
  typedef typename SELF::Polynomial   Polynomial;
  typedef typename Polynomial::Scalar Rational;
  typedef solver<Rational, ContFrac<Approximate> > Solver; 

  Point pt(0,0,0);
  PointSet pts;

  Rational a0(bx.xmin()), a1(bx.xmax()), b0(bx.ymin()), b1(bx.ymax());   
  Rational dx= (a1-a0)/N;
  Seq<Polynomial> sy = coefficients(c.equation(),1);
  int d = sy.size()-1;
  polynomial<Rational, with<MonomialTensor> > P(0,d);

  for (int i=0; i<N;i++,a0+=dx) {
    pt[0] = as<Scalar>(a0);
    for (int u=0;u<=d;u++) P[u] = sy[u](a0);
    typename Solver::Solutions sol; Solver::solve(sol,P,b0,b1);
    for(unsigned u=0;u<sol.size();u++) {
      pt[1] = as<Scalar>((lower(sol[u])+upper(sol[u]))/2);
      pts<<pt;    
    }
  }
  Rational dy= (b1-b0)/N;
  a0= Rational(bx.xmin());
  Seq<Polynomial> sx = coefficients(c.equation(),0);
  d = sx.size()-1;
  polynomial<Rational, with<MonomialTensor> > Q(0,d);
  for (int i=0; i<N;i++,b0+=dy) {
    pt[1] = as<Scalar>(b0);
    for (int u=0;u<=d;u++) Q[u] = sx[u]((Rational)0,b0);
    typename Solver::Solutions sol; Solver::solve(sol,Q,a0,a1);
    for(unsigned u=0;u<sol.size();u++) {
      pt[0] = as<Scalar>((lower(sol[u])+upper(sol[u]))/2);
      pts<<pt;    
    }
  }

  return pts;
}
point<double>* mmx::shape::point_on_edge ( const bounding_box< double > &  bx,
double  u,
const S1 &  s1,
const S2 &  s2 
)

Definition at line 36 of file solver_implicit.hpp.

References mmx::eval(), lower(), and upper().

{
  typedef point<double> Point;
  double p[3];
  p[S1::var] = S1::eval(bx);
  p[S2::var] = S2::eval(bx);
  int v= 3-S1::var-S2::var;
  p[v]= lower(bx,v)*(1-u) + upper(bx,v)*u;
  
  return new Point(p[0],p[1],p[2]);
  //    delete p;
}
void mmx::shape::print ( cell2d_voronoi_site2d< C, V > *  cv) [inline]

Definition at line 162 of file cell2d_voronoi_site2d.hpp.

                {
  typedef typename SELF::Point Point;
  std::cout << "point(s) b: "; 
  foreach(Point* p, cv->n_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  foreach(Point* p, cv->s_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  foreach(Point* p, cv->w_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  foreach(Point* p, cv->e_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  std::cout<<std::endl;
  
  std::cout << "Point(s) s: "; 
  foreach(Point* p, cv->m_singular)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  std::cout<<std::endl;
}
void mmx::shape::print ( cell2d_algebraic_curve< C, V > *  cv) [inline]

Definition at line 216 of file cell2d_algebraic_curve.hpp.

Referenced by cell2d_voronoi_diagram< C, V >::insert_regular(), operator<<(), and mmx::operator<<().

                {
  typedef typename SELF::Point Point;
  std::cout << "point(s) b: "; 
  foreach(Point* p, cv->n_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  foreach(Point* p, cv->s_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  foreach(Point* p, cv->w_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  foreach(Point* p, cv->e_intersections)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  std::cout<<std::endl;
  
  std::cout << "Point(s) s: "; 
  foreach(Point* p, cv->m_singular)  
    std::cout <<" ["<<p->x()<<" "<<p->y()<<"]";
  std::cout<<std::endl;
}
viewer<axel,K>& mmx::shape::print_boxes ( viewer< axel, K > &  out,
Graph< T >  g 
)
Examples:
algebraic_curve2d_test.cpp, and topology_test.cpp.

Definition at line 35 of file semialgebraic_domain2d_axel.hpp.

References CHECK, and Graph< T >::dfs().

                                       {
      
      
      //Seq<T> vertices;
      double xmin,xmax,ymin,ymax;
      Seq<T> v;
      
      g.dfs(v);
        //g.dfs(& shape::write_ok);
        //g.vertex_list(v);
      
      unsigned n=0;
      
      
      for (unsigned i=0; i<v.size(); i++)
      {
        CHECK;
        n+=4;
      }
      
      out<<" <curve type=\"mesh\" color=\"255 255 0\" >\n<vect>\nVECT\n";
      out<<n   <<" "
         <<2*n <<" "
         <<n   <<"\n";
      
      for(unsigned i=0; i<n; i++) out<<"2 ";//
      out<<"\n";
      
      for(unsigned i=0; i<n; i++) out<<"1 ";//
      out<<"\n";
      
                        //print edges
      for (unsigned i=0; i<v.size(); i++)
      {
        CHECK;
        
        xmin= v[i]->boundingBox().xmin();
        xmax= v[i]->boundingBox().xmax();
        ymin= v[i]->boundingBox().ymin();
        ymax= v[i]->boundingBox().ymax();
        
        //std::cout <<xmin  <<" "<<xmax  <<" "<<ymin  <<" "<<ymax <<"\n";
        
        out <<xmin  <<" "<<ymin <<" 0 "
            <<xmax  <<" "<<ymin <<" 0 "         
            <<"\n";
        
          out <<xmax  <<" "<<ymin  <<" 0 "
              <<xmax  <<" "<<ymax  <<" 0 "              
              <<"\n";
          
          out <<xmax  <<" "<<ymax  <<" 0 "
              <<xmin  <<" "<<ymax  <<" 0 "              
              <<"\n";
          
          out <<xmin  <<" "<<ymax  <<" 0 "
              <<xmin  <<" "<<ymin  <<" 0 "              
              <<"\n";
      }
      
      
      for(unsigned i=0; i<n; i++) 
        out<< "0.314 0.979 1 1\n";
      
      out<<" </vect>\n </curve>\n";
      
      return out;
    }
void mmx::shape::print_intersections ( cell2d< C, V > *  a) [inline]

Definition at line 469 of file cell2d.hpp.

{
    typedef typename topology<C,V>::Point Point;
                std::cout<< "Cell               : " << a  <<std::endl;
    std::cout<< "EAST, " <<a->e_intersections.size()  << std::endl;
    foreach(Point* cl,a->e_intersections)
                                std::cout<< cl->x()<<"  "<<cl->y() << std::endl;
    std::cout<< "WEST, " <<a->w_intersections.size() << std::endl;
    foreach(Point* cl,a->w_intersections)
                                std::cout<< cl->x()<<"  "<<cl->y() << std::endl;
    std::cout<< "NORTH, " <<a->n_intersections.size() << std::endl;
    foreach(Point* cl,a->n_intersections)
                                std::cout<< cl->x()<<"  "<<cl->y() << std::endl;
    std::cout<< "SOUTH, " <<a->s_intersections.size() <<std::endl;
    foreach(Point* cl,a->s_intersections)
                                std::cout<< cl->x()<<"  "<<cl->y() << std::endl;
}
void mmx::shape::print_neighbors ( cell2d< C, V > *  a) [inline]

Definition at line 451 of file cell2d.hpp.

References SELF.

{
                std::cout<< "Cell               : " << a  <<std::endl;
    std::cout<< "EAST, " <<a->e_neighbors.size()  << std::endl;
    foreach(SELF* cl,a->e_neighbors)
                                std::cout<< cl << std::endl;
    std::cout<< "WEST, " <<a->w_neighbors.size() << std::endl;
    foreach(SELF* cl,a->w_neighbors)
                                std::cout<< cl << std::endl;
    std::cout<< "NORTH, " <<a->n_neighbors.size() << std::endl;
    foreach(SELF* cl,a->n_neighbors)
                                std::cout<< cl << std::endl;
    std::cout<< "SOUTH, " <<a->s_neighbors.size() <<std::endl;
    foreach(SELF* cl,a->s_neighbors)
                                std::cout<< cl << std::endl;
}
point<C,with_idx<V>,N>::Scalar mmx::shape::read ( const point< C, with_idx< V >, N > &  v,
unsigned  i 
) [inline]

Definition at line 126 of file point_with_idx.hpp.

{ return v[i]; }
point<C,with_color<V>,N>::Scalar mmx::shape::read ( const point< C, with_color< V >, N > &  v,
unsigned  i 
) [inline]

Definition at line 110 of file point_with_color.hpp.

{ return v[i]; }
point<C,V,N>::Scalar mmx::shape::read ( const point< C, V, N > &  v,
unsigned  i 
) [inline]

Definition at line 173 of file point.hpp.

                                                                 {
 return v[i]; 
}
vertex<C,V,N>::Scalar mmx::shape::read ( const vertex< C, V, N > &  v,
unsigned  i 
) [inline]

Definition at line 136 of file vertex.hpp.

{ return v[i]; }
void remove ( list< T > &  l,
int  p 
)

Definition at line 62 of file list.hpp.

{
    typename list<T>::iterator it = l.begin() ;
    for(int i = 1 ; i < p ; i++, it++) ;
    l.erase(it) ;
}
void remove ( list< T > &  l,
t 
)

Definition at line 69 of file list.hpp.

References indexof().

{
    remove(l, indexof(l, t)) ;
}
void replace ( list< T > &  l,
int  p,
t 
)

Definition at line 55 of file list.hpp.

{
    typename list<T>::iterator it = l.begin() ;
    for(int i = 1 ; i < p ; i++, it++) ;
    *it = t ;
}
shape::edge_set<K>* mmx::shape::selfintersection ( const shape::surface_parametric< K > *  surf)

Definition at line 50 of file ssi_surface_parametric.hpp.

References Edge, EdgeSet, dsearch::lefts, dsearch::nbcurves, and dsearch::sizes.

{
    typedef typename EdgeSet::Point Point;
    typedef typename EdgeSet::Edge  Edge;
    typedef typename EdgeSet::PointIterator PointIterator;
    shape_ssi::dsearch ds(surf,200,200) ;
    
    int nbv, nbi, a, c, s ;
    
    for(nbv = 0, nbi = 0, c = 0 ; c < (int)ds.nbcurves ; c++)
    {
        s = ds.sizes[c]; 
        nbv += s;        
        nbi += (s-2)*2+2;
    }

    EdgeSet * result = new EdgeSet(nbv);
    //    SelfIntersectionResult * result = new SelfIntersectionResult(IGLGood::E_LINE, nbv, nbi, (int)ds.nbcurves);
    
    fxv<double,2> * prms = new fxv<double,2>[nbv];

    a = 0;
    for(c = 0 ; c < (int)ds.nbcurves ; c++) {
      //  result->lprm->params[c].size = (int)ds.sizes[c] ;
      //        result->rprm->params[c].size = (int)ds.sizes[c] ;
      //        result->lprm->params[c].prms = new fxv<double, 2>[(int)ds.sizes[c]] ;
      //        result->rprm->params[c].prms = new fxv<double, 2>[(int)ds.sizes[c]] ;
      for(int i = 0 ; i < (int)ds.sizes[c] ; i++, a++) {
        prms[a] = ds.lefts[c][i] ;
        //            result->lprm->params[c].prms[i] = ds.lefts[c][i] ;
        //            result->rprm->params[c].prms[i] = ds.rights[c][i] ;
      }
    }

    PointIterator p=result->begin();
    for(int i=0; i< nbv; i++,p++)
      surf->eval(*p,prms[i][0],prms[i][1]) ;

    //    int ci = 0 ;
    a = 0 ;  
    Point * p1, * p2;
    for(c = 0 ; c < (int)ds.nbcurves ; c++) {
        for(int i = 0 ; i < (int)ds.sizes[c]-1 ; i++, a++) {
          //            result->glg->indexes[ci]   = a;
          //            result->glg->indexes[ci+1] = a+1;
          //            ci += 2;
          p1= &result->vertex(a);
          p2= &result->vertex(a+1);
          result->push_edge(new Edge(p1,p2));
        }
        a++;
    }
    return result;
}
unsigned mmx::shape::soft_hash ( const shape::bounding_box< double, shape::MGXK > &  m) [inline]

Definition at line 36 of file bounding_box_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::point< C > &  m) [inline]

Definition at line 38 of file point_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::algebraic_curve< rational, shape::MGXK > &  m) [inline]

Definition at line 41 of file algebraic_curve_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::point_set< C, shape::with_color< V > > &  m) [inline]

Definition at line 33 of file point_set_with_color_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::ImplicitCurve &  m) [inline]

Definition at line 39 of file glue_implicit_curve.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::curve_rational< rational, shape::MGXK > &  m) [inline]

Definition at line 49 of file curve_rational_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::surface_algebraic< rational, shape::MGXK > &  m) [inline]

Definition at line 43 of file surface_algebraic_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::viewer< shape::axel, K > &  m) [inline]

Definition at line 31 of file axel_glue.hpp.

References hash().

{return hash(m);}
unsigned mmx::shape::soft_hash ( const shape::color< shape::MGXK > &  m) [inline]

Definition at line 35 of file color_glue.hpp.

References hash().

{return hash(m);}
double mmx::shape::upper ( const bounding_box< C, V > &  bx,
int  v 
) [inline]

Definition at line 125 of file bounding_box.hpp.

Referenced by solver_implicit< C, V >::common_edge_point(), mmx::create_curve_rational(), solver_implicit< C, V >::edge_point(), plot(), point_on_edge(), and cell2d_voronoi_diagram< C, V >::subdivide().

                             {
  switch(v) {
  case 0:
    return bx.xmax(); break ;
  case 1:
    return bx.ymax(); break ;
  default:
    return bx.zmax(); break ;
  }
}
double mmx::shape::upper ( double  x) [inline]

Definition at line 33 of file solver_implicit.hpp.

{return x;}
void mmx::shape::write_edge ( gNode< T > *  v)

Definition at line 757 of file graph.hpp.

{
  std::cout<<"Ok"<<std::endl;
}
void mmx::shape::write_ok ( gNode< T > *  v)

Definition at line 25 of file semialgebraic_domain2d_axel.hpp.

    {
      std::cout<<"Ok"<<std::endl;
    }

Variable Documentation

Initial value:
{
        0x0  , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,
        0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,
        0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,
        0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,
        0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c,
        0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,
        0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac,
        0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,
        0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c,
        0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,
        0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc,
        0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,
        0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c,
        0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,
        0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc ,
        0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,
        0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,
        0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,
        0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,
        0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,
        0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,
        0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
        0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,
        0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460,
        0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,
        0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0,
        0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,
        0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230,
        0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,
        0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190,
        0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,
        0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0}

Definition at line 6 of file marching_cube.cpp.

Referenced by marching_cube::centralise(), and marching_cube::polygonise().