#include <bcell2d_voronoi_diagram.hpp>
Definition at line 41 of file bcell2d_voronoi_diagram.hpp.
typedef bcell<C,V>::BoundingBox BoundingBox |
Reimplemented from bcell2d< C, V >.
Definition at line 47 of file bcell2d_voronoi_diagram.hpp.
Reimplemented from bcell< C, REF_OF(V) >.
Reimplemented in bcell2d_algebraic_curve< C, V >, bcell2d_parametric_curve< C, V >, and bcell2d_voronoi_site2d< C, V >.
Definition at line 53 of file bcell2d.hpp.
Definition at line 53 of file bcell2d_voronoi_diagram.hpp.
Reimplemented from bcell2d< C, V >.
Definition at line 49 of file bcell2d_voronoi_diagram.hpp.
Reimplemented from bcell2d< C, V >.
Definition at line 48 of file bcell2d_voronoi_diagram.hpp.
typedef polynomial< Interval<double>, with<Bernstein> > Polynomial |
Definition at line 52 of file bcell2d_voronoi_diagram.hpp.
Reimplemented from bcell2d< C, V >.
Definition at line 50 of file bcell2d_voronoi_diagram.hpp.
bcell2d_voronoi_diagram | ( | void | ) | [inline] |
Definition at line 638 of file bcell2d_voronoi_diagram.hpp.
00638 : m_intersected(false), m_treated(false) {}
bcell2d_voronoi_diagram | ( | double | xmin, | |
double | xmax | |||
) |
bcell2d_voronoi_diagram | ( | double | xmin, | |
double | xmax, | |||
double | ymin, | |||
double | ymax | |||
) | [inline] |
Definition at line 641 of file bcell2d_voronoi_diagram.hpp.
00641 : bcell2d<C,V>(xmin, xmax, ymin, ymax), m_intersected(false), m_bisector(false), m_treated(false) {}
bcell2d_voronoi_diagram | ( | double | xmin, | |
double | xmax, | |||
double | ymin, | |||
double | ymax, | |||
bool | itr | |||
) | [inline] |
Definition at line 644 of file bcell2d_voronoi_diagram.hpp.
00644 : bcell2d<C,V>(xmin, xmax, ymin, ymax), m_intersected(itr), m_bisector(false), m_treated(false) {}
bcell2d_voronoi_diagram | ( | const BoundingBox & | bx | ) | [inline] |
Definition at line 647 of file bcell2d_voronoi_diagram.hpp.
00647 : bcell2d<C,V>(bx), m_intersected(false), m_bisector(false), m_treated(false) {};
~bcell2d_voronoi_diagram | ( | void | ) | [inline, virtual] |
Definition at line 650 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects.
void addsite | ( | unsigned | i | ) | [inline] |
Definition at line 166 of file bcell2d_voronoi_diagram.hpp.
00166 {m_sites<<i;};
BoundingBox boundingBox | ( | ) | const [inline, inherited] |
Definition at line 71 of file cell.hpp.
00071 { return (BoundingBox)*this; }
bool compute_boundary | ( | ) | [inline] |
Definition at line 372 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, Cell2dAlgebraicCurve, bcell2d< C, V >::e_neighbors, bcell2d_voronoi_diagram< C, V >::intersections(), bcell2d_voronoi_diagram< C, V >::m_bisector, bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d_voronoi_diagram< C, V >::m_sites, bcell2d_voronoi_diagram< C, V >::m_treated, Seq< C, R >::member(), bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, SELF, Seq< C, R >::size(), bcell2d< C, V >::w_neighbors, point< C, N, V >::x(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), point< C, N, V >::y(), bounding_box< C, V >::ymax(), and bounding_box< C, V >::ymin().
00373 { 00374 int i(0),j(0), r(m_sites.size()-1); 00375 foreach ( Cell* obj, this->m_objects) 00376 { 00377 Cell2dAlgebraicCurve* cc= dynamic_cast<Cell2dAlgebraicCurve*>(obj); 00378 if (j<r) // bisector signature (i,j) 00379 j++; 00380 else 00381 { i++; j=i+1;} 00382 00383 //0 00384 if ( this->s_neighbors.size()==0) 00385 { 00386 Seq<Point *> ip; 00387 Solver::edge_point(ip, 00388 cc->m_polynomial, 00389 Solver::south_edge, 00390 *cc); 00391 cc->s_intersections << ip; 00392 } 00393 else 00394 foreach( Cell2d *c, this->s_neighbors ) 00395 if ( ((SELF*)c)->m_bisector ) 00396 { 00397 Seq<unsigned> a= ((SELF*)c)->sites(); 00398 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00399 { 00400 foreach(Point * p, ((SELF*)c)->intersections(2) ) 00401 if (this->xmin()<p->x() && this->xmax()>p->x()) 00402 cc->s_intersections << p; 00403 } 00404 } 00405 else if ( ((SELF*)c)->m_treated ) 00406 { 00407 int u(0),v(0); 00408 foreach( Cell *nc, ((SELF*)c)->m_objects ) 00409 { 00410 if (v<r) // bisector signature (u,v) 00411 v++; 00412 else 00413 { u++; v=u+1;} 00414 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00415 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00416 foreach(Point * p, ((SELF*)nc)->intersections(2) ) 00417 if (this->xmin()<p->x() && this->xmax()>p->x()) 00418 cc->s_intersections << p; 00419 } 00420 } 00421 else 00422 { 00423 Seq<Point *> ip; 00424 Solver::edge_point(ip, 00425 cc->m_polynomial, 00426 Solver::south_edge, 00427 *cc ); 00428 foreach(Point * p, ip ) 00429 if (c->xmin()<p->x() && c->xmax()>p->x()) 00430 cc->s_intersections << p; 00431 //std::cout<<"ip: "<< ip.size() <<"\n"; 00432 } 00433 00434 //1 00435 if (this->e_neighbors.size()==0) 00436 { 00437 Seq<Point *> ip; 00438 Solver::edge_point(ip, 00439 cc->m_polynomial, 00440 Solver::east_edge, 00441 *cc); 00442 cc->e_intersections << ip; 00443 } 00444 else 00445 foreach( Cell2d *c, this->e_neighbors ) 00446 if ( ((SELF*)c)->m_bisector ) 00447 { 00448 Seq<unsigned> a= ((SELF*)c)->sites(); 00449 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00450 { 00451 foreach(Point * p, ((SELF*)c)->intersections(3) ) 00452 if (this->ymin()<p->y() && this->ymax()>p->y()) 00453 cc->e_intersections << p; 00454 } 00455 } 00456 else if ( ((SELF*)c)->m_treated ) 00457 { 00458 int u(0),v(0); 00459 foreach( Cell *nc, ((SELF*)c)->m_objects ) 00460 { 00461 if (v<r) // bisector signature (u,v) 00462 v++; 00463 else 00464 { u++; v=u+1;} 00465 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00466 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00467 foreach(Point * p, ((SELF*)nc)->intersections(3) ) 00468 if (this->ymin()<p->y() && this->ymax()>p->y()) 00469 cc->e_intersections << p; 00470 } 00471 } 00472 else 00473 { 00474 Seq<Point *> ip; 00475 Solver::edge_point(ip, 00476 cc->m_polynomial, 00477 Solver::east_edge, 00478 *cc ); 00479 foreach(Point * p, ip ) 00480 if (c->ymin()<p->y() && c->ymax()>p->y()) 00481 cc->e_intersections << p; 00482 } 00483 00484 //2 00485 if (this->n_neighbors.size()==0 ) 00486 { 00487 Seq<Point *> ip; 00488 Solver::edge_point(ip, 00489 cc->m_polynomial, 00490 Solver::north_edge, 00491 *cc); 00492 cc->n_intersections << ip; 00493 } 00494 else 00495 foreach( Cell2d *c, this->n_neighbors ) 00496 if ( ((SELF*)c)->m_bisector ) 00497 { 00498 Seq<unsigned> a= ((SELF*)c)->sites(); 00499 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00500 { 00501 foreach(Point * p, ((SELF*)c)->intersections(0) ) 00502 if (this->xmin()<p->x() && this->xmax()>p->x()) 00503 cc->n_intersections << p; 00504 } 00505 } 00506 else if ( ((SELF*)c)->m_treated ) 00507 { 00508 int u(0),v(0); 00509 foreach( Cell *nc, ((SELF*)c)->m_objects ) 00510 { 00511 if (v<r) // bisector signature (u,v) 00512 v++; 00513 else 00514 { u++; v=u+1;} 00515 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00516 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00517 foreach(Point * p, ((SELF*)nc)->intersections(0) ) 00518 if (this->xmin()<p->x() && this->xmax()>p->x()) 00519 cc->n_intersections << p; 00520 } 00521 } 00522 else 00523 { 00524 Seq<Point *> ip; 00525 Solver::edge_point(ip, 00526 cc->m_polynomial, 00527 Solver::north_edge, 00528 *cc ); 00529 foreach(Point * p, ip ) 00530 if (c->xmin()<p->x() && c->xmax()>p->x()) 00531 cc->n_intersections << p; 00532 } 00533 00534 //3 00535 if (this->w_neighbors.size()==0) 00536 { 00537 Seq<Point *> ip; 00538 Solver::edge_point(ip, 00539 cc->m_polynomial, 00540 Solver::west_edge, 00541 *cc); 00542 cc->w_intersections << ip; 00543 } 00544 else 00545 foreach( Cell2d *c, this->w_neighbors ) 00546 if ( ((SELF*)c)->m_bisector ) 00547 { 00548 Seq<unsigned> a= ((SELF*)c)->sites(); 00549 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00550 { 00551 //Cell2d *c; 00552 //foreach(Point * p, ((VSite*)( ((SELF*)c)->m_objects[0]))->e_intersections ) 00553 foreach(Point * p, ((SELF*)c)->intersections(1) ) 00554 if (this->ymin()<p->y() && this->ymax()>p->y()) 00555 cc->w_intersections << p; 00556 } 00557 } 00558 else if ( ((SELF*)c)->m_treated ) 00559 { 00560 int u(0),v(0); 00561 foreach( Cell *nc, ((SELF*)c)->m_objects ) 00562 { 00563 if (v<r) // bisector signature (u,v) 00564 v++; 00565 else 00566 { u++; v=u+1;} 00567 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00568 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00569 foreach(Point * p, ((SELF*)nc)->intersections(1) ) 00570 if (this->ymin()<p->y() && this->ymax()>p->y()) 00571 cc->w_intersections << p; 00572 } 00573 } 00574 else 00575 { 00576 Seq<Point *> ip; 00577 Solver::edge_point(ip, 00578 cc->m_polynomial, 00579 Solver::west_edge, 00580 *cc ); 00581 foreach(Point * p, ip ) 00582 if (c->ymin()<p->y() && c->ymax()>p->y()) 00583 cc->w_intersections << p; 00584 00585 //std::cout<<"west: "<< *ip[0] <<"\n"; 00586 } 00587 00588 } 00589 this->m_treated=true; 00590 return true; 00591 }//compute_boundary
Definition at line 273 of file bcell2d.hpp.
References mmx::shape::check_overlap(), bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, Seq< C, R >::search(), SELF, and bcell2d< C, V >::w_neighbors.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), and bcell2d_intersection< C, V >::subdivide().
00274 { 00275 int i; 00276 bool flag; 00277 00278 //copy horizontally 00279 b->e_neighbors= this->e_neighbors ; 00280 foreach(SELF* cl,b->e_neighbors) { 00281 i= cl->w_neighbors.search(this); 00282 cl->w_neighbors[i]= b; 00283 } 00284 a->w_neighbors= this->w_neighbors ; 00285 foreach(SELF* cl,a->w_neighbors) { 00286 i= cl->e_neighbors.search(this); 00287 cl->e_neighbors[i]= a; 00288 } 00289 00290 //update vertically 00291 foreach(SELF* cl,this->s_neighbors) { 00292 flag=false; 00293 if ( check_overlap(cl,a,0)) 00294 { 00295 //assert( cl->ymax()== a->ymin() ); 00296 a->s_neighbors<< cl; 00297 i= cl->n_neighbors.search(this); 00298 cl->n_neighbors[i]= a; 00299 flag=true; 00300 } 00301 if ( check_overlap(cl,b,0) ) 00302 { 00303 //assert( cl->ymax()== b->ymin() ); 00304 b->s_neighbors<< cl; 00305 if (!flag) 00306 { 00307 i= cl->n_neighbors.search(this); 00308 cl->n_neighbors[i]= b; 00309 } 00310 else 00311 cl->n_neighbors << b; 00312 } 00313 } 00314 foreach(SELF* cl,this->n_neighbors) { 00315 flag=false; 00316 if ( check_overlap(cl,a,0)) 00317 { 00318 a->n_neighbors<< cl; 00319 i= cl->s_neighbors.search(this); 00320 cl->s_neighbors[i]= a; 00321 flag=true; 00322 } 00323 if ( check_overlap(cl,b,0) ) 00324 { 00325 b->n_neighbors<< cl; 00326 if (!flag) 00327 { 00328 i= cl->s_neighbors.search(this); 00329 cl->s_neighbors[i]= b; 00330 } 00331 else 00332 cl->s_neighbors << b; 00333 } 00334 } 00335 }
Definition at line 338 of file bcell2d.hpp.
References mmx::shape::check_overlap(), bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, Seq< C, R >::search(), SELF, and bcell2d< C, V >::w_neighbors.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), and bcell2d_intersection< C, V >::subdivide().
00339 { 00340 int i; 00341 bool flag; 00342 00343 //copy vertically 00344 a->s_neighbors= this->s_neighbors ; 00345 foreach(SELF* cl,a->s_neighbors) { 00346 i= cl->n_neighbors.search(this); 00347 cl->n_neighbors[i]= a; 00348 } 00349 b->n_neighbors= this->n_neighbors ; 00350 foreach(SELF* cl,b->n_neighbors) { 00351 i= cl->s_neighbors.search(this); 00352 cl->s_neighbors[i]= b; 00353 } 00354 00355 //update horizontally 00356 foreach(SELF* cl,this->w_neighbors) { 00357 flag=false; 00358 if ( check_overlap(cl,a,1)) 00359 { 00360 //assert( cl->xmax()== a->xmin() ); 00361 a->w_neighbors<< cl; 00362 i= cl->e_neighbors.search(this); 00363 cl->e_neighbors[i]= a; 00364 flag=true; 00365 } 00366 if ( check_overlap(cl,b,1) ) 00367 { 00368 //assert( cl->xmax()== b->xmin() ); 00369 b->w_neighbors<< cl; 00370 if (!flag) 00371 { 00372 i= cl->e_neighbors.search(this); 00373 cl->e_neighbors[i]= b; 00374 } 00375 else 00376 cl->e_neighbors << b; 00377 } 00378 } 00379 foreach(SELF* cl,this->e_neighbors) { 00380 flag=false; 00381 if ( check_overlap(cl,a,1)) 00382 { 00383 a->e_neighbors<< cl; 00384 i= cl->w_neighbors.search(this); 00385 cl->w_neighbors[i]= a; 00386 flag=true; 00387 } 00388 if ( check_overlap(cl,b,1) ) 00389 { 00390 b->e_neighbors<< cl; 00391 if (!flag) 00392 { 00393 i= cl->w_neighbors.search(this); 00394 cl->w_neighbors[i]= b; 00395 } 00396 else 00397 cl->w_neighbors << b; 00398 } 00399 } 00400 }
bool contains | ( | double | x, | |
double | y, | |||
double | z, | |||
bool | strict = false | |||
) | [inline, inherited] |
Definition at line 226 of file bounding_box.hpp.
References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, bounding_box< C, V >::m_ymin, bounding_box< C, V >::m_zmax, and bounding_box< C, V >::m_zmin.
00227 { 00228 if(!strict) 00229 return (((m_xmin <= x) && (x <= m_xmax)) 00230 && ((m_ymin <= y) && (y <= m_ymax)) 00231 && ((m_zmin <= z) && (z <= m_zmax))) ; 00232 else 00233 return (((m_xmin < x) && (x < m_xmax)) 00234 && ((m_ymin < y) && (y < m_ymax)) 00235 && ((m_zmin < z) && (z < m_zmax))) ; 00236 }
bool contains | ( | double | x, | |
double | y, | |||
bool | strict = false | |||
) | [inline, inherited] |
Definition at line 215 of file bounding_box.hpp.
References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, and bounding_box< C, V >::m_ymin.
bool contains | ( | double | x, | |
bool | strict = false | |||
) | [inline, inherited] |
Definition at line 206 of file bounding_box.hpp.
References bounding_box< C, V >::m_xmax, and bounding_box< C, V >::m_xmin.
int count | ( | void | ) | [inline] |
Definition at line 116 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects, and Seq< C, R >::size().
Referenced by bcell2d_voronoi_diagram< C, V >::signof(), and bcell2d_voronoi_diagram< C, V >::site().
00116 { return m_objects.size() ; }
void disconnect | ( | ) | [inline, inherited] |
Definition at line 414 of file bcell2d.hpp.
References Seq< C, R >::clear(), bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, and bcell2d< C, V >::w_neighbors.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), and bcell2d_intersection< C, V >::subdivide().
00415 { 00416 this->e_neighbors.clear(); 00417 this->w_neighbors.clear(); 00418 this->n_neighbors.clear(); 00419 this->s_neighbors.clear(); 00420 }
Polynomial func | ( | const int | i | ) | const [inline] |
Definition at line 117 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects, and VSite.
bool insert_regular | ( | Topology * | s | ) | [inline, virtual] |
Implements bcell< C, REF_OF(V) >.
Definition at line 685 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, Cell2dAlgebraicCurve, bcell2d< C, V >::e_neighbors, EPSILON, topology< C, V >::insert(), bcell2d_voronoi_diagram< C, V >::intersections(), cell< C, V >::is_active(), bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d< C, V >::n_neighbors, bcell2d_voronoi_diagram< C, V >::nb_intersect(), mmx::shape::print(), bcell2d< C, V >::s_neighbors, SELF, Seq< C, R >::size(), VSite, bcell2d< C, V >::w_neighbors, bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), and bounding_box< C, V >::ymin().
00685 { 00686 00687 Seq<Point*> l; 00688 l= this->intersections(); 00689 00690 00691 //std::cout<<"VD, regular: "<< *this<<", #="<<l.size() <<std::endl; 00692 // foreach( Point* e, l) 00693 // std::cout<<*e <<", at "<< e <<std::endl; 00694 00695 int * sz; 00696 int * st; 00697 Point *q; 00698 00699 if ( l.size()==2 ) 00700 { 00701 s->insert( l[0] ); 00702 s->insert( l[1] ); 00703 s->insert( new Edge(l[0],l[1]) ); 00704 return true; 00705 } 00706 00707 if ( l.size()==4 ) // two dublicated 00708 { 00709 s->insert( l[0] ); 00710 s->insert( l[1] ); 00711 s->insert( new Edge(l[0],l[1]) ); 00712 return true; 00713 } 00714 00715 if ( l.size()==1) 00716 { 00717 std::cout<< "SIZE ONE, "<< *this<<std::endl; 00718 00719 s->insert( l[0] ); 00720 foreach( Cell* c, this->m_objects ) 00721 if ( ((Cell2d*)c)->nb_intersect()==1 ) 00722 { 00723 sz= ((VSite*)c)->m_polynomial.rep().szs(); 00724 st= ((VSite*)c)->m_polynomial.rep().str(); 00725 if ( ((VSite*)c)->m_polynomial[0]<EPSILON ) 00726 { 00727 q= new Point(this->xmin(),this->ymin(),0); 00728 std::cout<< "1.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00729 s->insert(q); 00730 s->insert( new Edge(l[0],q) ); 00731 ((VSite*)c)->n_intersections<< q; 00732 00733 foreach( Cell2d *nb, this->s_neighbors ) 00734 foreach( Cell* cc, ((SELF*)nb)->m_objects ) 00735 if ( cc->is_active() ) 00736 { 00737 ((VSite*)cc)->n_intersections<< q; 00738 std::cout<<"This Intersections: "<< this->intersections().size() << std::endl; 00739 std::cout<<"Neib Intersections: "<< nb->intersections().size() << std::endl; 00740 return true; 00741 } 00742 foreach( Cell2d *nb, this->w_neighbors ) 00743 foreach( Cell* cc, ((SELF*)nb)->m_objects ) 00744 if ( cc->is_active() ) 00745 { 00746 ((VSite*)cc)->e_intersections<< q; 00747 std::cout<<"This Intersections: "<< this->intersections().size() << std::endl; 00748 std::cout<<"Neib Intersections: "<< nb->intersections().size() << std::endl; 00749 return true; 00750 } 00751 00752 } else if ( ((VSite*)c)->m_polynomial[(sz[0]-1)*st[0]]<EPSILON ) 00753 { 00754 q= new Point(this->xmax(),this->ymax(),0); 00755 std::cout<< "2.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00756 s->insert(q); 00757 s->insert( new Edge(l[0],q) ); 00758 ((VSite*)c)->s_intersections<< q; 00759 00760 00761 foreach( Cell2d *nb, this->e_neighbors ) 00762 foreach( Cell* cc, ((SELF*)nb)->m_objects ) 00763 if ( cc->is_active() ) 00764 { 00765 ((VSite*)cc)->w_intersections<< q; 00766 std::cout<<"This Intersections: "<< this->intersections().size() << std::endl; 00767 std::cout<<"Neib Intersections: "<< nb->intersections().size() << std::endl; 00768 return true; 00769 } 00770 foreach( Cell2d *nb, this->n_neighbors ) 00771 foreach( Cell* cc, ((SELF*)nb)->m_objects ) 00772 if ( cc->is_active() ) 00773 { 00774 ((VSite*)cc)->s_intersections<< q; 00775 std::cout<<"This Intersections: "<< this->intersections().size() << std::endl; 00776 std::cout<<"Neib Intersections: "<< nb->intersections().size() << std::endl; 00777 return true; 00778 } 00779 00780 } else if ( ((VSite*)c)->m_polynomial[sz[0]*sz[1]-1]<EPSILON ) 00781 { 00782 q= new Point(this->xmin(),this->ymax(),0); 00783 std::cout<< "3.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00784 s->insert(q); 00785 s->insert( new Edge(l[0],q) ); 00786 ((VSite*)c)->w_intersections<< q; 00787 return true; 00788 } else if ( ((VSite*)c)->m_polynomial[(sz[1]-1)*st[1]]<EPSILON ) 00789 { 00790 q= new Point(this->xmax(),this->ymin(),0); 00791 std::cout<< "4.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00792 s->insert(q); 00793 s->insert( new Edge(l[0],q) ); 00794 ((VSite*)c)->e_intersections<< q; 00795 return true; 00796 } 00797 } 00798 } 00799 00800 if ( l.size()==0) 00801 { 00802 std::cout<< "SIZE ZERO, "<< *this<<std::endl; 00803 return true; 00804 00805 foreach( Cell* c, this->m_objects ) 00806 { 00807 sz= ((VSite*)c)->m_polynomial.rep().szs(); 00808 st= ((VSite*)c)->m_polynomial.rep().str(); 00809 if ( ((VSite*)c)->m_polynomial[0]<EPSILON ) 00810 { 00811 q= new Point(this->xmin(),this->ymin(),0); 00812 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00813 s->insert(q); 00814 ((VSite*)c)->n_intersections<< q; 00815 return true; 00816 } else if ( ((VSite*)c)->m_polynomial[(sz[0]-1)*st[0]]<EPSILON ) 00817 { 00818 q= new Point(this->xmax(),this->ymax(),0); 00819 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00820 s->insert(q); 00821 ((VSite*)c)->s_intersections<< q; 00822 return true; 00823 } else if ( ((VSite*)c)->m_polynomial[sz[0]*sz[1]-1]<EPSILON ) 00824 { 00825 q= new Point(this->xmin(),this->ymax(),0); 00826 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00827 s->insert( new Edge(l[0],q) ); 00828 ((VSite*)c)->w_intersections<< q; 00829 return true; 00830 } else if ( ((VSite*)c)->m_polynomial[(sz[1]-1)*st[1]]<EPSILON ) 00831 { 00832 q= new Point(this->xmax(),this->ymin(),0); 00833 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00834 s->insert(q); 00835 s->insert( new Edge(l[0],q) ); 00836 ((VSite*)c)->e_intersections<< q; 00837 return true; 00838 } 00839 } 00840 } 00841 00842 std::cout<< "nb_in= "<< this->nb_intersect() <<std::endl; 00843 //std::cout<< "box = "<< *this <<std::endl; 00844 //foreach(Point* q, this->intersections() ) 00845 //std::cout<< " "<< *q <<std::endl; 00846 print((Cell2dAlgebraicCurve*)m_objects[0]); 00847 return true; 00848 }
virtual bool insert_singular | ( | Topology * | ) | [inline, virtual] |
Implements bcell< C, REF_OF(V) >.
Definition at line 69 of file bcell2d_voronoi_diagram.hpp.
bounding_box< C, V > * intersect | ( | const bounding_box< C, V > & | other | ) | [inline, inherited] |
Definition at line 319 of file bounding_box.hpp.
References mmx::shape::mmxmax(), mmx::shape::mmxmin(), SELF, bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
Referenced by bounding_box< double, V >::operator*().
00319 { 00320 SELF * bcell = new SELF ; 00321 bcell->set_xmin(mmxmax(this->xmin(), other.xmin())) ; 00322 bcell->set_xmax(mmxmin(this->xmax(), other.xmax())) ; 00323 bcell->set_ymin(mmxmax(this->ymin(), other.ymin())) ; 00324 bcell->set_ymax(mmxmin(this->ymax(), other.ymax())) ; 00325 bcell->set_zmin(mmxmax(this->zmin(), other.zmin())) ; 00326 bcell->set_zmax(mmxmin(this->zmax(), other.zmax())) ; 00327 return bcell ; 00328 }
void intersected | ( | bounding_box< C, V > * | other | ) | [inline, inherited] |
Definition at line 299 of file bounding_box.hpp.
References mmx::shape::mmxmax(), mmx::shape::mmxmin(), bounding_box< C, V >::set_xmax(), bounding_box< C, V >::set_xmin(), bounding_box< C, V >::set_ymax(), bounding_box< C, V >::set_ymin(), bounding_box< C, V >::set_zmax(), bounding_box< C, V >::set_zmin(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
00299 { 00300 set_xmin(mmxmax(this->xmin(), other->xmin())) ; 00301 set_xmax(mmxmin(this->xmax(), other->xmax())) ; 00302 set_ymin(mmxmax(this->ymin(), other->ymin())) ; 00303 set_ymax(mmxmin(this->ymax(), other->ymax())) ; 00304 set_zmin(mmxmax(this->zmin(), other->zmin())) ; 00305 set_zmax(mmxmin(this->zmax(), other->zmax())) ; 00306 }
Reimplemented from bcell2d< C, V >.
Definition at line 86 of file bcell2d_voronoi_diagram.hpp.
References Cell2dAlgebraicCurve, and bcell2d_voronoi_diagram< C, V >::m_objects.
00086 { 00087 Seq<Point*> l; 00088 Cell2dAlgebraicCurve* c; 00089 00090 foreach(Cell*m, this->m_objects) 00091 { 00092 c = dynamic_cast<Cell2dAlgebraicCurve*>(m); 00093 l<< c->intersections(i); 00094 } 00095 return l; 00096 }
Seq< typename mmx::shape::bcell2d< C, V >::Point * > intersections | ( | ) | const [inline, virtual] |
Reimplemented from bcell2d< C, V >.
Definition at line 1183 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, bcell2d_voronoi_diagram< C, V >::m_objects, Seq< C, R >::reversed(), and Seq< C, R >::sort().
Referenced by bcell2d_voronoi_diagram< C, V >::compute_boundary(), and bcell2d_voronoi_diagram< C, V >::insert_regular().
01183 { 01184 Seq<Point *> s,e,n,w,r; 01185 //std::cout<<"intersections, "<<*this<<std::endl; 01186 Cell2d* cl; 01187 foreach (Cell* m, m_objects) 01188 { 01189 cl = dynamic_cast<Cell2d*>(m); 01190 s<< cl->s_intersections; 01191 e<< cl->e_intersections; 01192 n<< cl->n_intersections; 01193 w<< cl->w_intersections; 01194 } 01195 s.sort(this->coord<0>); 01196 e.sort(this->coord<1>); 01197 n.sort(this->coord<0>); 01198 w.sort(this->coord<1>); 01199 01200 r<<s; 01201 r<<e; 01202 r<<n.reversed(); 01203 r<<w.reversed(); 01204 01205 01206 return ( r ); 01207 }
bool intersects | ( | bounding_box< C, V > * | other, | |
bool | strict = true | |||
) | [inline, inherited] |
Definition at line 239 of file bounding_box.hpp.
References bounding_box< C, V >::is0D(), bounding_box< C, V >::is1D(), bounding_box< C, V >::is2D(), bounding_box< C, V >::is3d(), mmx::shape::mmxmax(), mmx::shape::mmxmin(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
00240 { 00241 if(this->is0D()) 00242 return (this->xmin() == other->xmin()) ; 00243 else if(this->is1D()) 00244 if(strict) 00245 return ((mmxmax(this->xmin(), other->xmin()) < mmxmin(this->xmax(), other->xmax()))) ; 00246 else 00247 return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax()))) ; 00248 else if(this->is2D()) 00249 if(strict) 00250 return ((mmxmax(this->xmin(), other->xmin()) < mmxmin(this->xmax(), other->xmax())) && 00251 (mmxmax(this->ymin(), other->ymin()) < mmxmin(this->ymax(), other->ymax()))) ; 00252 else 00253 return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax())) && 00254 (mmxmax(this->ymin(), other->ymin()) <= mmxmin(this->ymax(), other->ymax()))) ; 00255 else if(this->is3d()) { 00256 if(strict) 00257 return ((mmxmax(this->xmin(), other->xmin()) < mmxmin(this->xmax(), other->xmax())) && 00258 (mmxmax(this->ymin(), other->ymin()) < mmxmin(this->ymax(), other->ymax())) && 00259 (mmxmax(this->zmin(), other->zmin()) < mmxmin(this->zmax(), other->zmax()))) ; 00260 else 00261 return ((mmxmax(this->xmin(), other->xmin()) <= mmxmin(this->xmax(), other->xmax())) && 00262 (mmxmax(this->ymin(), other->ymin()) <= mmxmin(this->ymax(), other->ymax())) && 00263 (mmxmax(this->zmin(), other->zmin()) <= mmxmin(this->zmax(), other->zmax()))) ; 00264 } 00265 return false ; 00266 }
bool is0D | ( | void | ) | const [inline, inherited] |
Definition at line 80 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().
bool is1D | ( | void | ) | const [inline, inherited] |
Definition at line 81 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().
bool is2D | ( | void | ) | const [inline, inherited] |
Definition at line 82 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().
bool is3d | ( | void | ) | const [inline, inherited] |
Definition at line 83 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersects(), and bounding_box< C, V >::unites().
bool is_active | ( | void | ) | [inline, virtual] |
Implements cell< C, V >.
Definition at line 1027 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects.
01027 { 01028 if ( this->is_bisector() ) 01029 { 01030 return (this->m_objects[0])->is_active(); 01031 } 01032 else 01033 { 01034 return true; 01035 } 01036 01037 }
bool is_border | ( | void | ) | const [inline, inherited] |
Definition at line 114 of file bcell2d.hpp.
Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), mesher2d< C, V >::run(), and arrangement2d< C, V >::run().
00114 { 00115 return ( this->s_neighbors.size()==0 || 00116 this->e_neighbors.size()==0 || 00117 this->n_neighbors.size()==0 || 00118 this->w_neighbors.size()==0 ); 00119 }
bool is_corner | ( | void | ) | const [inline, inherited] |
Definition at line 423 of file bcell2d.hpp.
References bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, Seq< C, R >::size(), and bcell2d< C, V >::w_neighbors.
Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), and arrangement2d< C, V >::run().
00423 { 00424 00425 if (this->s_neighbors.size()==0 && 00426 this->e_neighbors.size()==0 ) 00427 return true; 00428 else if (this->e_neighbors.size()==0 && 00429 this->n_neighbors.size()==0 ) 00430 return true; 00431 else if (this->n_neighbors.size()==0 && 00432 this->w_neighbors.size()==0 ) 00433 return true; 00434 else if (this->w_neighbors.size()==0 && 00435 this->s_neighbors.size()==0 ) 00436 return true; 00437 00438 return false; 00439 }
bool is_intersected | ( | void | ) | [inline, virtual] |
Implements bcell< C, REF_OF(V) >.
Definition at line 669 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_intersected, bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d< C, V >::m_singular, and Seq< C, R >::size().
Referenced by bcell2d_voronoi_diagram< C, V >::pair(), and bcell2d_voronoi_diagram< C, V >::process_singular().
00669 { 00670 00671 if(this->m_objects.size() >1 && !m_intersected) { 00672 // std::cout<<"Intersecting inside box "<< this <<std::endl; 00673 for(unsigned i=0; i<this->m_objects.size();i++) 00674 for(unsigned j=i+1; j<this->m_objects.size(); j++) 00675 Intersection2dFactory::instance()->compute(this->m_singular, (Shape*)this->m_objects[i], (Shape*)this->m_objects[j], (BoundingBox)*this); 00676 m_intersected = true; 00677 } 00678 00679 if (this->m_singular.size() > 0) return true; 00680 return false; 00681 }
bool is_regular | ( | void | ) | [inline, virtual] |
Implements cell< C, V >.
Definition at line 655 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects.
00656 { 00657 //std::cout<<"bisector? "<< this->is_bisector()<<std::endl; 00658 if ( this->is_bisector() ) 00659 { 00660 return (this->m_objects[0])->is_regular(); 00661 } 00662 else 00663 { 00664 return false; 00665 } 00666 }
virtual bool is_touching | ( | void | ) | [inline, virtual] |
Definition at line 78 of file bcell2d_voronoi_diagram.hpp.
void join0 | ( | bcell2d< C, V > * | b | ) | [inline, inherited] |
Definition at line 259 of file bcell2d.hpp.
References bcell2d< C, V >::e_neighbors.
00260 { 00261 this->e_neighbors << b; 00262 b->w_neighbors << this; 00263 }
void join1 | ( | bcell2d< C, V > * | b | ) | [inline, inherited] |
Definition at line 266 of file bcell2d.hpp.
References bcell2d< C, V >::n_neighbors.
00267 { 00268 b->s_neighbors << this; 00269 this->n_neighbors << b; 00270 }
unsigned nb_intersect | ( | void | ) | const [inline, virtual] |
Reimplemented from bcell2d< C, V >.
Definition at line 1040 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, bcell2d_voronoi_diagram< C, V >::m_objects, and sum().
Referenced by bcell2d_voronoi_diagram< C, V >::insert_regular().
Reimplemented from bcell2d< C, V >.
Definition at line 1141 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, bcell2d< C, V >::e_neighbors, bcell2d< C, V >::n_neighbors, bcell2d< C, V >::s_neighbors, and bcell2d< C, V >::w_neighbors.
01142 { 01143 foreach( Cell2d *c, this->s_neighbors ) 01144 if ( c->intersections(2).member(p) ) 01145 // foreach( Point* q, c->intersections(2) ) 01146 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01147 return c; 01148 01149 foreach( Cell2d *c, this->e_neighbors ) 01150 if ( c->intersections(3).member(p) ) 01151 // foreach( Point* q, c->intersections(3) ) 01152 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01153 return c; 01154 01155 foreach( Cell2d *c, this->n_neighbors ) 01156 if ( c->intersections(0).member(p) ) 01157 // foreach( Point* q, c->intersections(0) ) 01158 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01159 return c; 01160 01161 foreach( Cell2d *c, this->w_neighbors ) 01162 if ( c->intersections(1).member(p) ) 01163 // foreach( Point* q, c->intersections(1) ) 01164 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01165 return c; 01166 01167 /* 01168 01169 std::cout<<"Point "<<"("<<*p<<") not found in neighbs of "<< *this<<"( #neibs="<<this->neighbors().size() <<")"<<std::endl; 01170 01171 foreach( Cell2d* c, this->neighbors() ) 01172 { 01173 std::cout<< *c <<" ints:"<< ((SELF*)c)->intersections().size() <<std::endl; 01174 foreach(Point* q, c->intersections() ) 01175 std::cout<<"Point "<<q<<" ("<<*q<<")"<<std::endl; 01176 } 01177 */ 01178 01179 return NULL; 01180 }
Definition at line 154 of file bcell2d.hpp.
Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), and arrangement2d< C, V >::run().
00154 { 00155 Seq<bcell2d *> r; 00156 r<< this->s_neighbors; 00157 r<< this->e_neighbors; 00158 r<< this->n_neighbors; 00159 r<< this->w_neighbors; 00160 return ( r ); }
double & operator() | ( | unsigned | v, | |
unsigned | s | |||
) | [inline, inherited] |
Definition at line 356 of file bounding_box.hpp.
References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, bounding_box< C, V >::m_ymin, bounding_box< C, V >::m_zmax, and bounding_box< C, V >::m_zmin.
double operator() | ( | unsigned | v, | |
unsigned | s | |||
) | const [inline, inherited] |
Definition at line 343 of file bounding_box.hpp.
References bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
bounding_box<C,V>* operator* | ( | const bounding_box< C, V > & | other | ) | [inline, inherited] |
Definition at line 103 of file bounding_box.hpp.
00103 { return intersect(other) ; }
bounding_box<C,V>* operator+ | ( | const bounding_box< C, V > & | other | ) | [inline, inherited] |
Definition at line 104 of file bounding_box.hpp.
00104 { return unite(other) ; }
bcell2d_voronoi_diagram< C, V >::Point * pair | ( | Point * | p, | |
int & | sgn | |||
) | [inline, virtual] |
Implements bcell2d< C, V >.
Definition at line 1053 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, bcell2d_voronoi_diagram< C, V >::is_intersected(), bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d_voronoi_diagram< C, V >::signof(), and bcell2d_voronoi_diagram< C, V >::site().
01054 { 01055 01056 // std::cout<<(sgn>0?"+": "-")<<" pair of "<< *this<<"("<< p->x()<<","<<p->y()<<")"<<std::endl; 01057 01058 if ( this->is_intersected() ) 01059 { 01060 //std::cout<<"Reached Vertex bcell "<< *this << " ("<<sgn<<")"<<std::endl; 01061 //std::cout<<"sites are "<< this->m_sites <<std::endl; 01062 //foreach( Point* q, this->intersections() ) 01063 //std::cout<< *q<<std::endl; 01064 01065 //Find bisector containing p 01066 01067 unsigned st, cnt(0); 01068 foreach (Cell* mm, this->m_objects) 01069 { 01070 Cell2d* m = dynamic_cast<Cell2d*>(mm); 01071 01072 if ( m->intersections().member(p) ) 01073 // foreach( Point* q, m->intersections() ) 01074 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01075 { 01076 // p found in bisector m. 01077 //std::cout<< "Current bisector: "<< cnt <<std::endl; 01078 // deduce site from sgn 01079 st=this->site(sgn,cnt); 01080 //std::cout<< "Site is: "<< st <<std::endl; 01081 // jump to a different bisector containing st 01082 unsigned cnt2(0); 01083 foreach (Cell* cc, this->m_objects) 01084 { 01085 Cell2d* c = dynamic_cast<Cell2d*>(cc); 01086 if ( c!=m && 01087 (st==this->site(1,cnt2) || 01088 st==this->site(-1,cnt2) )) 01089 { 01090 sgn= this->signof(st,cnt2); 01091 // std::cout<< "New bisector: "<< cnt2 <<std::endl; 01092 // std::cout<< "New sign: "<< sgn <<std::endl; 01093 // std::cout<< "start="<< *(c->starting_point(sgn))<<std::endl; 01094 // std::cout<< "end ="<< *(c->pair(c->starting_point(sgn), sgn )) <<std::endl; 01095 01096 return c->pair(c->starting_point(sgn), sgn ); 01097 } 01098 cnt2++; 01099 } 01100 } 01101 cnt++; 01102 } 01103 01104 } else { 01105 01106 Cell2d* c; 01107 foreach (Cell* m, m_objects) 01108 { 01109 c = dynamic_cast<Cell2d*>(m); 01110 if ( c->intersections().member(p) ) 01111 // foreach( Point* q, c->intersections() ) 01112 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01113 { 01114 //return c->pair(q,sgn); 01115 return c->pair(p,sgn); 01116 } 01117 } 01118 } 01119 std::cout<<"... Cell list pair trouble"<<std::endl; 01120 return NULL; 01121 }
bool process_singular | ( | ) | [inline, virtual] |
Definition at line 851 of file bcell2d_voronoi_diagram.hpp.
References Cell2dAlgebraicCurve, Seq< C, R >::clear(), bcell2d_voronoi_diagram< C, V >::is_intersected(), bcell2d_voronoi_diagram< C, V >::m_bisector, bcell2d_voronoi_diagram< C, V >::m_objects, Seq< C, R >::size(), and VSite.
00851 { 00852 00853 // std::cout<<"VD, Inserting singular"<<*this<<std::endl; 00854 // ((voronoi2d<C,V>*)s)->m_singular_cells<< this; // does not work with forward declaration of voronoi2d 00855 00856 // foreach( Point* q, this->intersections() ) 00857 // std::cout<< *q<<" adr "<<q<<std::endl; 00858 00859 00860 //CellList* l= new CellList( (BoundingBox)(*this) ); 00861 Seq<Cell2dAlgebraicCurve*> l; 00862 Cell2dAlgebraicCurve* cc; 00863 00864 //std::cout<<"compute arrangement of bisectors"<<std::endl; 00865 //More than one bisector in the bcell: Compute arrangement 00866 Polynomial p; 00867 for ( unsigned i=0; i< this->m_objects.size(); i++ ) 00868 for ( unsigned j=i+1; j< this->m_objects.size(); j++ ) 00869 { 00870 p = ((VSite*)(this->m_objects[i]))->m_polynomial ; 00871 p -= ((VSite*)(this->m_objects[j]))->m_polynomial ; 00872 00873 cc= new Cell2dAlgebraicCurve( p, (BoundingBox)(*this), false ); 00874 //if ( cc->is_active() ) //commented:Put all curves, even inactive! 00875 l<< cc; 00876 } 00877 00878 this->m_objects.clear(); 00879 this->m_objects<< l; 00880 this->is_intersected(); 00881 // foreach(Cell * m, this->m_objects) m->insert_singular(s); 00882 00883 return true; 00884 00885 this->m_bisector=true;// .. 00886 00887 //foreach(Cell * m, l ) m->insert_singular(s); 00888 00889 //if (this->m_singular.size()>0 ) 00890 // std::cout<<"VORONOI VERTEX COMPUTED in"<< *this <<std::endl; 00891 00892 }
void push_back | ( | bcell< C, V > * | cv, | |
unsigned | k | |||
) | [inline] |
Definition at line 104 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d_voronoi_diagram< C, V >::m_sites, and Seq< C, R >::push_back().
void push_back | ( | bcell< C, V > * | cv | ) | [inline] |
Definition at line 98 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d_voronoi_diagram< C, V >::m_sites, Seq< C, R >::push_back(), and Seq< C, R >::size().
void push_bisector | ( | bcell2d_algebraic_curve< C, V > * | cv, | |
Seq< unsigned > | k | |||
) | [inline] |
Definition at line 110 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d_voronoi_diagram< C, V >::m_sites, and Seq< C, R >::push_back().
void set_xmax | ( | double | x | ) | [inline, inherited] |
Definition at line 74 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().
00074 { this->m_xmax = x ; }
void set_xmin | ( | double | x | ) | [inline, inherited] |
Definition at line 73 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().
00073 { this->m_xmin = x ; }
void set_ymax | ( | double | y | ) | [inline, inherited] |
Definition at line 76 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().
00076 { this->m_ymax = y ; }
void set_ymin | ( | double | y | ) | [inline, inherited] |
Definition at line 75 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersected(), and bounding_box< C, V >::united().
00075 { this->m_ymin = y ; }
void set_zmax | ( | double | z | ) | [inline, inherited] |
Definition at line 78 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersected(), voronoi2dimpl< C, V >::run(), mesher2d< C, V >::set_input_bbox(), and bounding_box< C, V >::united().
00078 { this->m_zmax = z ; }
void set_zmin | ( | double | z | ) | [inline, inherited] |
Definition at line 77 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::intersected(), voronoi2dimpl< C, V >::run(), mesher2d< C, V >::set_input_bbox(), and bounding_box< C, V >::united().
00077 { this->m_zmin = z ; }
int side | ( | Point * | p | ) | [inline, inherited] |
Definition at line 132 of file bcell2d.hpp.
00132 { 00133 Seq<Point*> all; 00134 int s,i,a; 00135 s = s_intersections.size(); 00136 all = this->intersections(); 00137 a = all.size(); 00138 i = all.search(p); 00139 if (i==-1) return (-1); 00140 else return 00141 ( i<s ? 0 : 00142 ( i<s+(int)e_intersections.size() ? 1 : 00143 ( i<a-(int)w_intersections.size() ? 2 : 00144 3 ))); 00145 }
int signature | ( | int & | i, | |
int & | j | |||
) | [inline] |
Definition at line 121 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_sites, and Seq< C, R >::size().
00121 { 00122 int c(0); 00123 for ( int u=0; u<i; u++) 00124 for ( int v=u+1; v<m_sites.size(); v++) 00125 c++; 00126 return c + j-i-1; }
int signof | ( | unsigned | st, | |
unsigned | bs = 0 | |||
) | [inline] |
Definition at line 142 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::count(), bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d_voronoi_diagram< C, V >::m_sites, and Seq< C, R >::size().
Referenced by bcell2d_voronoi_diagram< C, V >::pair().
00142 { 00143 00144 if (this->m_objects.size()==1 ) 00145 return ( st==m_sites[0]? -1 :1 ); 00146 00147 //std::cout<<"Sgnof " <<st<<"(bs="<<bs<<") on "<< *this<<"objs="<<this->m_objects.size()<<std::endl; 00148 00149 unsigned n=this->count() - 1; 00150 unsigned i,j(0),k(0); 00151 00152 for (i=0;i<=bs;i++) 00153 if ( k<n ) 00154 k++ ; 00155 else 00156 j++ ; 00157 00158 if (st==this->m_sites[j]) return (-1); 00159 if (st==this->m_sites[k]) return (1); 00160 00161 std::cout<<"problem at \"signof\" "<<i <<", "<< *this <<"sites= "<<m_sites<<std::endl; 00162 return 0; 00163 };
unsigned site | ( | int | sgn, | |
unsigned | bs = 0 | |||
) | [inline] |
Definition at line 128 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::count(), and bcell2d_voronoi_diagram< C, V >::m_sites.
Referenced by bcell2d_voronoi_diagram< C, V >::pair().
Seq<unsigned> sites | ( | ) | const [inline] |
Definition at line 165 of file bcell2d_voronoi_diagram.hpp.
References bcell2d_voronoi_diagram< C, V >::m_sites.
00165 { return m_sites;};
double size | ( | void | ) | [inline, inherited] |
Definition at line 199 of file bounding_box.hpp.
References bounding_box< C, V >::m_xmax, bounding_box< C, V >::m_xmin, bounding_box< C, V >::m_ymax, bounding_box< C, V >::m_ymin, bounding_box< C, V >::m_zmax, bounding_box< C, V >::m_zmin, and mmx::max().
Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), mesher3d_shape< C, V >::run(), mesher3d_algebraic_curve< C, V >::run(), and mesher2d< C, V >::run().
void split_position | ( | int & | v, | |
double & | t | |||
) | [inline, virtual] |
Reimplemented from bcell2d< C, V >.
Definition at line 895 of file bcell2d_voronoi_diagram.hpp.
References bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), and bounding_box< C, V >::ymin().
bcell2d_voronoi_diagram< C, V >::Point * starting_point | ( | int | sgn | ) | [inline, virtual] |
Implements bcell2d< C, V >.
Definition at line 1124 of file bcell2d_voronoi_diagram.hpp.
References Cell2d, cell< C, V >::is_active(), bcell2d_voronoi_diagram< C, V >::m_objects, and VSite.
01125 { 01126 // std::cout<<"starting point(voronoi diagram)"<<std::endl; 01127 01128 Cell2d* c; 01129 foreach (Cell* m, m_objects) 01130 { 01131 if ( m->is_active() ) 01132 { 01133 c = dynamic_cast<Cell2d*>(m); 01134 return ((VSite*)c)->starting_point(sgn); 01135 } 01136 } 01137 return NULL; 01138 }
virtual void subdivide | ( | bcell< C , REF_OF(V) > *& | left, | |
bcell< C , REF_OF(V) > *& | right, | |||
int | v, | |||
double | s | |||
) | [pure virtual, inherited] |
virtual int subdivide | ( | bcell< C , REF_OF(V) > *& | left, | |
bcell< C , REF_OF(V) > *& | right | |||
) | [virtual, inherited] |
Definition at line 908 of file bcell2d_voronoi_diagram.hpp.
References Cell2dAlgebraicCurve, bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_voronoi_diagram< C, V >::m_intersected, bcell2d_voronoi_diagram< C, V >::m_objects, bcell2d< C, V >::m_singular, bcell2d_voronoi_diagram< C, V >::m_sites, Seq< C, R >::min(), SELF, bcell< C, V >::subdivide(), mmx::shape::upper(), VSite, point< C, N, V >::x(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), point< C, N, V >::y(), bounding_box< C, V >::ymax(), and bounding_box< C, V >::ymin().
00908 { 00909 00910 //std::cout<<"Subdividing "<< this << "sites="<<this->m_sites <<std::endl; 00911 00912 typedef SELF Cell_t; 00913 00914 if(v==1) { 00915 left =(Cell*)new Cell_t(this->xmin(), this->xmax(), this->ymin(), c, m_intersected) ; 00916 right=(Cell*)new Cell_t(this->xmin(), this->xmax(), c, this->ymax(), m_intersected) ; 00917 00918 foreach(Point * p, this->m_singular) { 00919 if(p->y() <= c) 00920 ((Cell_t*) left)->m_singular << p ; 00921 else 00922 ((Cell_t*)right)->m_singular << p ; 00923 } 00924 00925 /* Update neighbors */ 00926 this->connect1( (Cell_t*)left, (Cell_t*)right); 00927 ((Cell_t*)left)->join1((Cell_t*)right); 00928 00929 } else {//v==0 00930 left = (Cell*)new Cell_t(this->xmin(), c, this->ymin(), this->ymax(), m_intersected) ; 00931 right= (Cell*)new Cell_t(c, this->xmax(), this->ymin(), this->ymax(), m_intersected) ; 00932 00933 foreach(Point * p, this->m_singular) { 00934 if(p->x() <= c ) 00935 ((Cell_t*)left)->m_singular << p ; 00936 else 00937 ((Cell_t*)right)->m_singular << p ; 00938 } 00939 00940 /* Update neighbors */ 00941 this->connect0((Cell_t*)left, (Cell_t*)right); 00942 ((Cell_t*)left)->join0((Cell_t*)right); 00943 00944 } 00945 00946 /* disconnect parent */ 00947 this->disconnect( ); 00948 00949 if (!this->is_bisector() ) 00950 { 00951 00952 Seq<VSite*> ll, rr; 00953 Cell * cv_left, * cv_right; 00954 00955 foreach(Cell* cv, this->m_objects) { 00956 cv->subdivide( cv_left, cv_right); 00957 ll<< (VSite*)cv_left; 00958 rr<< (VSite*)cv_right; 00959 } 00960 00961 /* Filtering sites that are "far away" */ 00962 //1. find minimum upper bound 00963 //2. remove all bcells whose lower bound is bigger than that 00964 //std::cout<<"Filtering Cells "<< cv_left<<" , "<<cv_right<<std::endl; 00965 00966 /* Left bcell */ 00967 double mm; 00968 unsigned cnt; 00969 mm= ( (VSite*)ll.min(this->comp_up) )->upper(); 00970 00971 cnt=0; 00972 foreach(VSite* vs, ll) 00973 { 00974 //std::cout<<"check "<< m_sites[cnt]<<std::endl; 00975 if ( !this->over(vs,mm) ) 00976 { 00977 ((Cell_t*)left)->push_back( vs, m_sites[cnt] ); 00978 //std::cout<<"added "<< m_sites[cnt]<<std::endl; 00979 } 00980 cnt++; 00981 //else 00982 //{ 00983 //delete vs; 00984 //ll.erase( ll.search(vs) ) ; 00985 //} 00986 } 00987 00988 /* Right bcell */ 00989 mm= ( (VSite*)rr.min(this->comp_up) )->upper(); 00990 00991 cnt=0; 00992 foreach(VSite* vs, rr) 00993 { 00994 if ( !this->over(vs,mm) ) 00995 { 00996 ((Cell_t*)right)->push_back( vs, m_sites[cnt] ); 00997 //((Cell_t*)right)->m_objects<< (Cell*)vs; 00998 } 00999 //else 01000 //{ 01001 //delete vs; 01002 //ll.erase( ll.search(vs) ) ; 01003 //} 01004 cnt++; 01005 } 01006 } 01007 else 01008 {//bisector box 01009 01010 Cell * cv_left, * cv_right; 01011 //std::cout<<"bisector subdiv " <<std::endl; 01012 this->m_objects[0]->subdivide( cv_left, cv_right); 01013 ((Cell_t*)left)->push_bisector( (Cell2dAlgebraicCurve*)cv_left, m_sites ); 01014 ((Cell_t*)right)->push_bisector((Cell2dAlgebraicCurve*)cv_right, m_sites ); 01015 01016 ((Cell_t*)left)->m_bisector=true; 01017 ((Cell_t*)right)->m_bisector=true; 01018 01019 } 01020 01021 // std::cout<<"ok " <<std::endl; 01022 }
bounding_box< C, V > * unite | ( | bounding_box< C, V > * | other | ) | [inline, inherited] |
Definition at line 331 of file bounding_box.hpp.
References mmx::shape::mmxmax(), mmx::shape::mmxmin(), SELF, bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
Referenced by bounding_box< double, V >::operator+().
00331 { 00332 SELF * bcell = new SELF ; 00333 bcell->set_xmin(mmxmin(this->xmin(), other->xmin())) ; 00334 bcell->set_xmax(mmxmax(this->xmax(), other->xmax())) ; 00335 bcell->set_ymin(mmxmin(this->ymin(), other->ymin())) ; 00336 bcell->set_ymax(mmxmax(this->ymax(), other->ymax())) ; 00337 bcell->set_zmin(mmxmin(this->zmin(), other->zmin())) ; 00338 bcell->set_zmax(mmxmax(this->zmax(), other->zmax())) ; 00339 return bcell ; 00340 }
void united | ( | bounding_box< C, V > * | other | ) | [inline, inherited] |
Definition at line 309 of file bounding_box.hpp.
References mmx::shape::mmxmax(), mmx::shape::mmxmin(), bounding_box< C, V >::set_xmax(), bounding_box< C, V >::set_xmin(), bounding_box< C, V >::set_ymax(), bounding_box< C, V >::set_ymin(), bounding_box< C, V >::set_zmax(), bounding_box< C, V >::set_zmin(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
00309 { 00310 set_xmin(mmxmin(this->xmin(), other->xmin())) ; 00311 set_xmax(mmxmax(this->xmax(), other->xmax())) ; 00312 set_ymin(mmxmin(this->ymin(), other->ymin())) ; 00313 set_ymax(mmxmax(this->ymax(), other->ymax())) ; 00314 set_zmin(mmxmin(this->zmin(), other->zmin())) ; 00315 set_zmax(mmxmax(this->zmax(), other->zmax())) ; 00316 }
bool unites | ( | bounding_box< C, V > * | other, | |
bool | strict = true | |||
) | [inline, inherited] |
Definition at line 269 of file bounding_box.hpp.
References bounding_box< C, V >::is0D(), bounding_box< C, V >::is1D(), bounding_box< C, V >::is2D(), bounding_box< C, V >::is3d(), mmx::shape::mmxmax(), mmx::shape::mmxmin(), bounding_box< C, V >::xmax(), bounding_box< C, V >::xmin(), bounding_box< C, V >::ymax(), bounding_box< C, V >::ymin(), bounding_box< C, V >::zmax(), and bounding_box< C, V >::zmin().
00270 { 00271 if(this->is0D()) 00272 return (this->xmin() == other->xmin()) ; 00273 else if(this->is1D()) { 00274 if(strict) 00275 return ((mmxmin(this->xmin(), other->xmin()) < mmxmax(this->xmax(), other->xmax()))) ; 00276 else 00277 return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax()))) ; 00278 } else if(this->is2D()) { 00279 if(strict) 00280 return ((mmxmin(this->xmin(), other->xmin()) < mmxmax(this->xmax(), other->xmax())) && 00281 (mmxmin(this->ymin(), other->ymin()) < mmxmax(this->ymax(), other->ymax()))) ; 00282 else 00283 return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax())) && 00284 (mmxmin(this->ymin(), other->ymin()) <= mmxmax(this->ymax(), other->ymax()))) ; 00285 } else if(this->is3d()) { 00286 if(strict) 00287 return ((mmxmin(this->xmin(), other->xmin()) < mmxmax(this->xmax(), other->xmax())) && 00288 (mmxmin(this->ymin(), other->ymin()) < mmxmax(this->ymax(), other->ymax())) && 00289 (mmxmin(this->zmin(), other->zmin()) < mmxmax(this->zmax(), other->zmax()))) ; 00290 else 00291 return ((mmxmin(this->xmin(), other->xmin()) <= mmxmax(this->xmax(), other->xmax())) && 00292 (mmxmin(this->ymin(), other->ymin()) <= mmxmax(this->ymax(), other->ymax())) && 00293 (mmxmin(this->zmin(), other->zmin()) <= mmxmax(this->zmax(), other->zmax()))) ; 00294 } 00295 return false ; 00296 }
double xmax | ( | void | ) | const [inline, inherited] |
Definition at line 63 of file bounding_box.hpp.
00063 { return m_xmax ; }
double xmax | ( | void | ) | [inline, inherited] |
Definition at line 56 of file bounding_box.hpp.
Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().
00056 { return m_xmax ; }
double xmin | ( | void | ) | const [inline, inherited] |
Definition at line 62 of file bounding_box.hpp.
00062 { return m_xmin ; }
double xmin | ( | void | ) | [inline, inherited] |
Definition at line 55 of file bounding_box.hpp.
Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), mmx::shape::operator<<(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().
00055 { return m_xmin ; }
double xsize | ( | void | ) | const [inline, inherited] |
Definition at line 69 of file bounding_box.hpp.
double ymax | ( | void | ) | const [inline, inherited] |
Definition at line 65 of file bounding_box.hpp.
00065 { return m_ymax ; }
double ymax | ( | void | ) | [inline, inherited] |
Definition at line 58 of file bounding_box.hpp.
Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().
00058 { return m_ymax ; }
double ymin | ( | void | ) | const [inline, inherited] |
Definition at line 64 of file bounding_box.hpp.
00064 { return m_ymin ; }
double ymin | ( | void | ) | [inline, inherited] |
Definition at line 57 of file bounding_box.hpp.
Referenced by bcell2d_algebraic_curve< C, V >::bcell2d_algebraic_curve(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell2d_algebraic_curve< C, V >::cell2d_algebraic_curve(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), cell2d< C, REF_OF(V) >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), EdgeListBuilder< node_t >::computeCommonFace(), solver_implicit< C, V >::extremal(), cell2d_algebraic_curve< C, V >::gradient(), bcell2d_voronoi_site2d< C, V >::gradient(), bcell2d_voronoi_impl2d< C, V >::gradient(), bcell2d_algebraic_curve< C, V >::gradient(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), solver_implicit< C, V >::intersection(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), cell2d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), solver_implicit< C, V >::singular(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), cell2d_algebraic_curve< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell2d_voronoi_impl_diagram< C, V >::split_position(), bcell2d_voronoi_diagram< C, V >::split_position(), bcell2d_list< C, V >::split_position(), bcell2d_intersection< C, V >::split_position(), bcell2d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), bcell2d_intersection< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), voronoi_site2d< C, V >::upper_bound(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().
00057 { return m_ymin ; }
double ysize | ( | void | ) | const [inline, inherited] |
Definition at line 70 of file bounding_box.hpp.
double zmax | ( | void | ) | const [inline, inherited] |
Definition at line 67 of file bounding_box.hpp.
00067 { return m_zmax ; }
double zmax | ( | void | ) | [inline, inherited] |
Definition at line 60 of file bounding_box.hpp.
Referenced by bcell2d_voronoi_impl2d< C, V >::bcell2d_voronoi_impl2d(), bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), EdgeListBuilder< node_t >::computeCommonFace(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().
00060 { return m_zmax ; }
double zmin | ( | void | ) | const [inline, inherited] |
Definition at line 66 of file bounding_box.hpp.
00066 { return m_zmin ; }
double zmin | ( | void | ) | [inline, inherited] |
Definition at line 59 of file bounding_box.hpp.
Referenced by bcell3d_algebraic_curve< C, V >::bcell3d_algebraic_curve(), bcell3d_algebraic_surface< C, V >::bcell3d_algebraic_surface(), cell3d_algebraic_surface< C, V >::cell3d_algebraic_surface(), cell3d< C, V >::center(), bcell3d_algebraic_surface< C, V >::center(), bcell3d< C, V >::center(), EdgeListBuilder< node_t >::computeCommonFace(), topology< C, V >::insert(), mesher3d_algebraic_curve< C, V >::insert(), bounding_box< C, V >::intersect(), bounding_box< C, V >::intersected(), bounding_box< C, V >::intersects(), cell3d< C, V >::is_adjacent(), bounding_box< C, V >::operator()(), cell3d_algebraic_surface< C, V >::point(), cell3d_algebraic_surface< C, V >::split(), bcell3d_algebraic_surface< C, V >::split(), cell3d< C, V >::split_position(), bcell3d_list< C, V >::split_position(), bcell3d< C, V >::split_position(), bcell3d_algebraic_curve< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::topology_regular(), bounding_box< C, V >::unite(), bounding_box< C, V >::united(), bounding_box< C, V >::unites(), cell3d_algebraic_surface< C, V >::value(), and EdgeListBuilder< node_t >::verifyFaceList().
00059 { return m_zmin ; }
double zsize | ( | void | ) | const [inline, inherited] |
Definition at line 71 of file bounding_box.hpp.
Seq<Point *> e_intersections [inherited] |
Definition at line 123 of file bcell2d.hpp.
Referenced by bcell2d< C, REF_OF(V) >::intersections(), bcell2d< C, REF_OF(V) >::nb_intersect(), bcell2d< C, REF_OF(V) >::neighbor(), and bcell2d< C, REF_OF(V) >::side().
Seq<bcell2d *> e_neighbors [inherited] |
Definition at line 163 of file bcell2d.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bcell2d< C, REF_OF(V) >::is_border(), bcell2d< C, V >::is_corner(), bcell2d< C, V >::join0(), bcell2d_voronoi_impl_diagram< C, V >::neighbor(), bcell2d_voronoi_diagram< C, V >::neighbor(), bcell2d_list< C, V >::neighbor(), bcell2d_intersection< C, V >::neighbor(), bcell2d< C, REF_OF(V) >::neighbor(), bcell2d< C, REF_OF(V) >::neighbors(), voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), mesher2d< C, V >::run(), and arrangement2d< C, V >::run().
bool m_bisector [protected] |
Definition at line 175 of file bcell2d_voronoi_diagram.hpp.
Referenced by bcell2d_voronoi_diagram< C, V >::compute_boundary(), and bcell2d_voronoi_diagram< C, V >::process_singular().
Definition at line 130 of file bcell2d.hpp.
Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), and mesher2d< C, V >::run().
bool m_intersected [protected] |
Definition at line 174 of file bcell2d_voronoi_diagram.hpp.
Referenced by bcell2d_voronoi_diagram< C, V >::is_intersected(), and bcell2d_voronoi_diagram< C, V >::subdivide().
Definition at line 166 of file bcell2d_voronoi_diagram.hpp.
Referenced by bcell2d_voronoi_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::count(), bcell2d_voronoi_diagram< C, V >::func(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::intersections(), bcell2d_voronoi_diagram< C, V >::is_active(), bcell2d_voronoi_diagram< C, V >::is_intersected(), bcell2d_voronoi_diagram< C, V >::is_regular(), bcell2d_voronoi_diagram< C, V >::nb_intersect(), bcell2d_voronoi_diagram< C, V >::pair(), bcell2d_voronoi_diagram< C, V >::process_singular(), bcell2d_voronoi_diagram< C, V >::push_back(), bcell2d_voronoi_diagram< C, V >::push_bisector(), bcell2d_voronoi_diagram< C, V >::signof(), bcell2d_voronoi_diagram< C, V >::starting_point(), bcell2d_voronoi_diagram< C, V >::subdivide(), and bcell2d_voronoi_diagram< C, V >::~bcell2d_voronoi_diagram().
Seq<Point *> m_singular [inherited] |
Definition at line 126 of file bcell2d.hpp.
Referenced by bcell2d_list< C, V >::insert_regular(), bcell2d_intersection< C, V >::insert_regular(), bcell2d_voronoi_impl_diagram< C, V >::is_intersected(), bcell2d_voronoi_diagram< C, V >::is_intersected(), bcell2d_list< C, V >::is_intersected(), bcell2d_intersection< C, V >::is_intersected(), bcell2d_list< C, V >::is_regular(), bcell2d_intersection< C, V >::is_regular(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), bcell2d_voronoi_diagram< C, V >::subdivide(), bcell2d_list< C, V >::subdivide(), and bcell2d_intersection< C, V >::subdivide().
Definition at line 173 of file bcell2d_voronoi_diagram.hpp.
Referenced by bcell2d_voronoi_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::push_back(), bcell2d_voronoi_diagram< C, V >::push_bisector(), bcell2d_voronoi_diagram< C, V >::signature(), bcell2d_voronoi_diagram< C, V >::signof(), bcell2d_voronoi_diagram< C, V >::site(), bcell2d_voronoi_diagram< C, V >::sites(), and bcell2d_voronoi_diagram< C, V >::subdivide().
bool m_treated [protected] |
Definition at line 176 of file bcell2d_voronoi_diagram.hpp.
Referenced by bcell2d_voronoi_diagram< C, V >::compute_boundary().
double m_xmax [protected, inherited] |
Definition at line 107 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::bounding_box(), bounding_box< C, V >::contains(), bounding_box< double, V >::is0D(), bounding_box< double, V >::is1D(), bounding_box< double, V >::is2D(), bounding_box< double, V >::is3d(), bounding_box< C, V >::operator()(), bounding_box< double, V >::set_xmax(), bounding_box< C, V >::size(), bounding_box< double, V >::xmax(), and bounding_box< double, V >::xsize().
double m_xmin [protected, inherited] |
Definition at line 107 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::bounding_box(), bounding_box< C, V >::contains(), bounding_box< double, V >::is0D(), bounding_box< double, V >::is1D(), bounding_box< double, V >::is2D(), bounding_box< double, V >::is3d(), bounding_box< C, V >::operator()(), bounding_box< double, V >::set_xmin(), bounding_box< C, V >::size(), bounding_box< double, V >::xmin(), and bounding_box< double, V >::xsize().
double m_ymax [protected, inherited] |
Definition at line 108 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::bounding_box(), bounding_box< C, V >::contains(), bounding_box< double, V >::is0D(), bounding_box< double, V >::is1D(), bounding_box< double, V >::is2D(), bounding_box< double, V >::is3d(), bounding_box< C, V >::operator()(), bounding_box< double, V >::set_ymax(), bounding_box< C, V >::size(), bounding_box< double, V >::ymax(), and bounding_box< double, V >::ysize().
double m_ymin [protected, inherited] |
Definition at line 108 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::bounding_box(), bounding_box< C, V >::contains(), bounding_box< double, V >::is0D(), bounding_box< double, V >::is1D(), bounding_box< double, V >::is2D(), bounding_box< double, V >::is3d(), bounding_box< C, V >::operator()(), bounding_box< double, V >::set_ymin(), bounding_box< C, V >::size(), bounding_box< double, V >::ymin(), and bounding_box< double, V >::ysize().
double m_zmax [protected, inherited] |
Definition at line 109 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::bounding_box(), bounding_box< C, V >::contains(), bounding_box< double, V >::is0D(), bounding_box< double, V >::is1D(), bounding_box< double, V >::is2D(), bounding_box< double, V >::is3d(), bounding_box< C, V >::operator()(), bounding_box< double, V >::set_zmax(), bounding_box< C, V >::size(), bounding_box< double, V >::zmax(), and bounding_box< double, V >::zsize().
double m_zmin [protected, inherited] |
Definition at line 109 of file bounding_box.hpp.
Referenced by bounding_box< C, V >::bounding_box(), bounding_box< C, V >::contains(), bounding_box< double, V >::is0D(), bounding_box< double, V >::is1D(), bounding_box< double, V >::is2D(), bounding_box< double, V >::is3d(), bounding_box< C, V >::operator()(), bounding_box< double, V >::set_zmin(), bounding_box< C, V >::size(), bounding_box< double, V >::zmin(), and bounding_box< double, V >::zsize().
Seq<Point *> n_intersections [inherited] |
Definition at line 124 of file bcell2d.hpp.
Referenced by bcell2d< C, REF_OF(V) >::intersections(), bcell2d< C, REF_OF(V) >::nb_intersect(), and bcell2d< C, REF_OF(V) >::neighbor().
Seq<bcell2d *> n_neighbors [inherited] |
Definition at line 164 of file bcell2d.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bcell2d< C, REF_OF(V) >::is_border(), bcell2d< C, V >::is_corner(), bcell2d< C, V >::join1(), bcell2d_voronoi_impl_diagram< C, V >::neighbor(), bcell2d_voronoi_diagram< C, V >::neighbor(), bcell2d_list< C, V >::neighbor(), bcell2d_intersection< C, V >::neighbor(), bcell2d< C, REF_OF(V) >::neighbor(), bcell2d< C, REF_OF(V) >::neighbors(), voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), mesher2d< C, V >::run(), and arrangement2d< C, V >::run().
Seq<Point *> s_intersections [inherited] |
Definition at line 122 of file bcell2d.hpp.
Referenced by bcell2d< C, REF_OF(V) >::intersections(), bcell2d< C, REF_OF(V) >::nb_intersect(), bcell2d< C, REF_OF(V) >::neighbor(), and bcell2d< C, REF_OF(V) >::side().
Seq<bcell2d *> s_neighbors [inherited] |
Definition at line 162 of file bcell2d.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bcell2d< C, REF_OF(V) >::is_border(), bcell2d< C, V >::is_corner(), bcell2d_voronoi_impl_diagram< C, V >::neighbor(), bcell2d_voronoi_diagram< C, V >::neighbor(), bcell2d_list< C, V >::neighbor(), bcell2d_intersection< C, V >::neighbor(), bcell2d< C, REF_OF(V) >::neighbor(), bcell2d< C, REF_OF(V) >::neighbors(), voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), mesher2d< C, V >::run(), and arrangement2d< C, V >::run().
Seq<Point *> w_intersections [inherited] |
Definition at line 125 of file bcell2d.hpp.
Referenced by bcell2d< C, REF_OF(V) >::intersections(), bcell2d< C, REF_OF(V) >::nb_intersect(), bcell2d< C, REF_OF(V) >::neighbor(), and bcell2d< C, REF_OF(V) >::side().
Seq<bcell2d *> w_neighbors [inherited] |
Definition at line 165 of file bcell2d.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_diagram< C, V >::compute_boundary(), bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_diagram< C, V >::insert_regular(), bcell2d< C, REF_OF(V) >::is_border(), bcell2d< C, V >::is_corner(), bcell2d_voronoi_impl_diagram< C, V >::neighbor(), bcell2d_voronoi_diagram< C, V >::neighbor(), bcell2d_list< C, V >::neighbor(), bcell2d_intersection< C, V >::neighbor(), bcell2d< C, REF_OF(V) >::neighbor(), bcell2d< C, REF_OF(V) >::neighbors(), voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), mesher2d< C, V >::run(), and arrangement2d< C, V >::run().