#include <cell2d_algebraic_curve.hpp>
Kernel for cell2d_algebraic_curve Polynomial : the type of polynomial associated to this class. subdivisor : the function which subdivides the representation.
Definition at line 38 of file cell2d_algebraic_curve.hpp.
void subdivide | ( | CELL & | cl, | |
CELL *& | left, | |||
CELL *& | right, | |||
int | v, | |||
double | s | |||
) | [inline, static] |
Definition at line 47 of file cell2d_algebraic_curve.hpp.
References Point, Solver, and mmx::split().
00047 { 00048 00049 typedef typename topology<C,V>::Point Point; 00050 typedef solver_implicit<C,V> Solver; 00051 00052 00053 double eps =Approximate().eps; 00054 if(v==0) {//direction v=0 00055 left = new CELL(cl); left ->set_xmax(s); 00056 right= new CELL(cl); right->set_xmin(s); 00057 00058 tensor::split(left->m_polynomial, right->m_polynomial, v); 00059 00060 foreach(Point* p,cl.m_special) { 00061 00062 if(p->x() < s+eps) 00063 left ->m_special << p ; 00064 // else 00065 if(p->x() > s-eps) 00066 right->m_special << p ; 00067 } 00068 00069 00070 } else {//direction v==1 00071 00072 left = new CELL(cl); left->set_ymax(s); 00073 right= new CELL(cl); right->set_ymin(s); 00074 00075 tensor::split(left->m_polynomial, right->m_polynomial, v); 00076 00077 foreach(Point* p,cl.m_special) { 00078 if(p->y() < s+eps) 00079 left->m_special << p ; 00080 // else 00081 if(p->y() > s-eps) 00082 right->m_special << p ; 00083 } 00084 } 00085 00086 }