#include <bcell2d_voronoi_impl_diagram.hpp>
Definition at line 43 of file bcell2d_voronoi_impl_diagram.hpp.
typedef bcell<C,V>::BoundingBox BoundingBox |
Reimplemented from bcell2d< C, V >.
Definition at line 49 of file bcell2d_voronoi_impl_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 58 of file bcell2d_voronoi_impl_diagram.hpp.
Reimplemented from bcell2d< C, V >.
Definition at line 51 of file bcell2d_voronoi_impl_diagram.hpp.
Reimplemented from bcell2d< C, V >.
Definition at line 50 of file bcell2d_voronoi_impl_diagram.hpp.
typedef polynomial< double, with<Bernstein> > Polynomial |
Definition at line 57 of file bcell2d_voronoi_impl_diagram.hpp.
Reimplemented from bcell2d< C, V >.
Definition at line 54 of file bcell2d_voronoi_impl_diagram.hpp.
typedef tpl3d<C,V> Topology3d |
Definition at line 53 of file bcell2d_voronoi_impl_diagram.hpp.
bcell2d_voronoi_impl_diagram | ( | void | ) | [inline] |
Definition at line 647 of file bcell2d_voronoi_impl_diagram.hpp.
00647 : m_intersected(false), m_treated(false) {}
bcell2d_voronoi_impl_diagram | ( | double | xmin, | |
double | xmax | |||
) |
bcell2d_voronoi_impl_diagram | ( | double | xmin, | |
double | xmax, | |||
double | ymin, | |||
double | ymax | |||
) | [inline] |
Definition at line 650 of file bcell2d_voronoi_impl_diagram.hpp.
00650 : bcell2d<C,V>(xmin, xmax, ymin, ymax), m_intersected(false), m_bisector(false), m_treated(false) {}
bcell2d_voronoi_impl_diagram | ( | double | xmin, | |
double | xmax, | |||
double | ymin, | |||
double | ymax, | |||
bool | itr | |||
) | [inline] |
Definition at line 653 of file bcell2d_voronoi_impl_diagram.hpp.
00653 : bcell2d<C,V>(xmin, xmax, ymin, ymax), m_intersected(itr), m_bisector(false), m_treated(false) {}
bcell2d_voronoi_impl_diagram | ( | const BoundingBox & | bx | ) | [inline] |
Definition at line 656 of file bcell2d_voronoi_impl_diagram.hpp.
00656 : bcell2d<C,V>(bx), m_intersected(false), m_bisector(false), m_treated(false) {};
~bcell2d_voronoi_impl_diagram | ( | void | ) | [inline, virtual] |
Definition at line 659 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell3d, and bcell2d_voronoi_impl_diagram< C, V >::m_objects.
void addsite | ( | unsigned | i | ) | [inline] |
Definition at line 171 of file bcell2d_voronoi_impl_diagram.hpp.
00171 {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 381 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell2d, Cell3d, Cell3dImplicitCurve, bcell2d< C, V >::e_neighbors, bcell2d_voronoi_impl_diagram< C, V >::intersections(), bcell2d_voronoi_impl_diagram< C, V >::m_bisector, bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d_voronoi_impl_diagram< C, V >::m_sites, bcell2d_voronoi_impl_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().
00382 { 00383 int i(0),j(0), r(m_sites.size()-1); 00384 foreach ( Cell3d* obj, this->m_objects) 00385 { 00386 Cell3dImplicitCurve* cc= dynamic_cast<Cell3dImplicitCurve*>(obj); 00387 if (j<r) // bisector signature (i,j) 00388 j++; 00389 else 00390 { i++; j=i+1;} 00391 00392 //0 00393 if ( this->s_neighbors.size()==0) 00394 { 00395 Seq<Point *> ip; 00396 Solver::edge_point(ip, 00397 cc->m_polynomial, 00398 Solver::south_edge, 00399 *cc); 00400 cc->s_intersections << ip; 00401 } 00402 else 00403 foreach( Cell2d *c, this->s_neighbors ) 00404 if ( ((SELF*)c)->m_bisector ) 00405 { 00406 Seq<unsigned> a= ((SELF*)c)->sites(); 00407 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00408 { 00409 foreach(Point * p, ((SELF*)c)->intersections(2) ) 00410 if (this->xmin()<p->x() && this->xmax()>p->x()) 00411 cc->s_intersections << p; 00412 } 00413 } 00414 else if ( ((SELF*)c)->m_treated ) 00415 { 00416 int u(0),v(0); 00417 foreach( Cell3d *nc, ((SELF*)c)->m_objects ) 00418 { 00419 if (v<r) // bisector signature (u,v) 00420 v++; 00421 else 00422 { u++; v=u+1;} 00423 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00424 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00425 foreach(Point * p, ((SELF*)nc)->intersections(2) ) 00426 if (this->xmin()<p->x() && this->xmax()>p->x()) 00427 cc->s_intersections << p; 00428 } 00429 } 00430 else 00431 { 00432 Seq<Point *> ip; 00433 Solver::edge_point(ip, 00434 cc->m_polynomial, 00435 Solver::south_edge, 00436 *cc ); 00437 foreach(Point * p, ip ) 00438 if (c->xmin()<p->x() && c->xmax()>p->x()) 00439 cc->s_intersections << p; 00440 //std::cout<<"ip: "<< ip.size() <<"\n"; 00441 } 00442 00443 //1 00444 if (this->e_neighbors.size()==0) 00445 { 00446 Seq<Point *> ip; 00447 Solver::edge_point(ip, 00448 cc->m_polynomial, 00449 Solver::east_edge, 00450 *cc); 00451 cc->e_intersections << ip; 00452 } 00453 else 00454 foreach( Cell2d *c, this->e_neighbors ) 00455 if ( ((SELF*)c)->m_bisector ) 00456 { 00457 Seq<unsigned> a= ((SELF*)c)->sites(); 00458 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00459 { 00460 foreach(Point * p, ((SELF*)c)->intersections(3) ) 00461 if (this->ymin()<p->y() && this->ymax()>p->y()) 00462 cc->e_intersections << p; 00463 } 00464 } 00465 else if ( ((SELF*)c)->m_treated ) 00466 { 00467 int u(0),v(0); 00468 foreach( Cell3d *nc, ((SELF*)c)->m_objects ) 00469 { 00470 if (v<r) // bisector signature (u,v) 00471 v++; 00472 else 00473 { u++; v=u+1;} 00474 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00475 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00476 foreach(Point * p, ((SELF*)nc)->intersections(3) ) 00477 if (this->ymin()<p->y() && this->ymax()>p->y()) 00478 cc->e_intersections << p; 00479 } 00480 } 00481 else 00482 { 00483 Seq<Point *> ip; 00484 Solver::edge_point(ip, 00485 cc->m_polynomial, 00486 Solver::east_edge, 00487 *cc ); 00488 foreach(Point * p, ip ) 00489 if (c->ymin()<p->y() && c->ymax()>p->y()) 00490 cc->e_intersections << p; 00491 } 00492 00493 //2 00494 if (this->n_neighbors.size()==0 ) 00495 { 00496 Seq<Point *> ip; 00497 Solver::edge_point(ip, 00498 cc->m_polynomial, 00499 Solver::north_edge, 00500 *cc); 00501 cc->n_intersections << ip; 00502 } 00503 else 00504 foreach( Cell2d *c, this->n_neighbors ) 00505 if ( ((SELF*)c)->m_bisector ) 00506 { 00507 Seq<unsigned> a= ((SELF*)c)->sites(); 00508 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00509 { 00510 foreach(Point * p, ((SELF*)c)->intersections(0) ) 00511 if (this->xmin()<p->x() && this->xmax()>p->x()) 00512 cc->n_intersections << p; 00513 } 00514 } 00515 else if ( ((SELF*)c)->m_treated ) 00516 { 00517 int u(0),v(0); 00518 foreach( Cell3d *nc, ((SELF*)c)->m_objects ) 00519 { 00520 if (v<r) // bisector signature (u,v) 00521 v++; 00522 else 00523 { u++; v=u+1;} 00524 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00525 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00526 foreach(Point * p, ((SELF*)nc)->intersections(0) ) 00527 if (this->xmin()<p->x() && this->xmax()>p->x()) 00528 cc->n_intersections << p; 00529 } 00530 } 00531 else 00532 { 00533 Seq<Point *> ip; 00534 Solver::edge_point(ip, 00535 cc->m_polynomial, 00536 Solver::north_edge, 00537 *cc ); 00538 foreach(Point * p, ip ) 00539 if (c->xmin()<p->x() && c->xmax()>p->x()) 00540 cc->n_intersections << p; 00541 } 00542 00543 //3 00544 if (this->w_neighbors.size()==0) 00545 { 00546 Seq<Point *> ip; 00547 Solver::edge_point(ip, 00548 cc->m_polynomial, 00549 Solver::west_edge, 00550 *cc); 00551 cc->w_intersections << ip; 00552 } 00553 else 00554 foreach( Cell2d *c, this->w_neighbors ) 00555 if ( ((SELF*)c)->m_bisector ) 00556 { 00557 Seq<unsigned> a= ((SELF*)c)->sites(); 00558 if ( a.member( m_sites[i]) && a.member(m_sites[j]) ) 00559 { 00560 //Cell2d *c; 00561 //foreach(Point * p, ((VSite*)( ((SELF*)c)->m_objects[0]))->e_intersections ) 00562 foreach(Point * p, ((SELF*)c)->intersections(1) ) 00563 if (this->ymin()<p->y() && this->ymax()>p->y()) 00564 cc->w_intersections << p; 00565 } 00566 } 00567 else if ( ((SELF*)c)->m_treated ) 00568 { 00569 int u(0),v(0); 00570 foreach( Cell3d *nc, ((SELF*)c)->m_objects ) 00571 { 00572 if (v<r) // bisector signature (u,v) 00573 v++; 00574 else 00575 { u++; v=u+1;} 00576 if ( ((SELF*)c)->m_sites[u]==m_sites[i] && 00577 ((SELF*)c)->m_sites[v]==m_sites[j] ) 00578 foreach(Point * p, ((SELF*)nc)->intersections(1) ) 00579 if (this->ymin()<p->y() && this->ymax()>p->y()) 00580 cc->w_intersections << p; 00581 } 00582 } 00583 else 00584 { 00585 Seq<Point *> ip; 00586 Solver::edge_point(ip, 00587 cc->m_polynomial, 00588 Solver::west_edge, 00589 *cc ); 00590 foreach(Point * p, ip ) 00591 if (c->ymin()<p->y() && c->ymax()>p->y()) 00592 cc->w_intersections << p; 00593 00594 //std::cout<<"west: "<< *ip[0] <<"\n"; 00595 } 00596 00597 } 00598 this->m_treated=true; 00599 return true; 00600 }//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 121 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects, and Seq< C, R >::size().
Referenced by bcell2d_voronoi_impl_diagram< C, V >::signof(), and bcell2d_voronoi_impl_diagram< C, V >::site().
00121 { 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 122 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects, and VSite.
bool insert_regular | ( | Topology * | s | ) | [inline, virtual] |
Implements bcell< C, REF_OF(V) >.
Definition at line 694 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell2d, Cell3d, bcell2d< C, V >::e_neighbors, EPSILON, topology< C, V >::insert(), bcell2d_voronoi_impl_diagram< C, V >::intersections(), bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d< C, V >::n_neighbors, bcell2d_voronoi_impl_diagram< C, V >::nb_intersect(), 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().
00694 { 00695 00696 Seq<Point*> l; 00697 l= this->intersections(); 00698 00699 00700 //std::cout<<"VD, regular: "<< *this<<", #="<<l.size() <<std::endl; 00701 // foreach( Point* e, l) 00702 // std::cout<<*e <<", at "<< e <<std::endl; 00703 00704 int * sz; 00705 int * st; 00706 Point *q; 00707 00708 if ( l.size()==2 ) 00709 { 00710 s->insert( l[0] ); 00711 s->insert( l[1] ); 00712 s->insert( new Edge(l[0],l[1]) ); 00713 return true; 00714 } 00715 00716 if ( l.size()==4 ) // two dublicated 00717 { 00718 s->insert( l[0] ); 00719 s->insert( l[1] ); 00720 s->insert( new Edge(l[0],l[1]) ); 00721 return true; 00722 } 00723 00724 if ( l.size()==1) 00725 { 00726 std::cout<< "SIZE ONE, "<< *this<<std::endl; 00727 00728 s->insert( l[0] ); 00729 foreach( Cell3d* c, this->m_objects ) 00730 if ( ((Cell2d*)c)->nb_intersect()==1 ) 00731 { 00732 sz= ((VSite*)c)->m_polynomial.rep().szs(); 00733 st= ((VSite*)c)->m_polynomial.rep().str(); 00734 if ( ((VSite*)c)->m_polynomial[0]<EPSILON ) 00735 { 00736 q= new Point(this->xmin(),this->ymin(),0); 00737 std::cout<< "1.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00738 s->insert(q); 00739 s->insert( new Edge(l[0],q) ); 00740 ((VSite*)c)->n_intersections<< q; 00741 00742 foreach( Cell2d *nb, this->s_neighbors ) 00743 foreach( Cell3d* cc, ((SELF*)nb)->m_objects ) 00744 if ( cc->is_active() ) 00745 { 00746 ((VSite*)cc)->n_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 foreach( Cell2d *nb, this->w_neighbors ) 00752 foreach( Cell3d* cc, ((SELF*)nb)->m_objects ) 00753 if ( cc->is_active() ) 00754 { 00755 ((VSite*)cc)->e_intersections<< q; 00756 std::cout<<"This Intersections: "<< this->intersections().size() << std::endl; 00757 std::cout<<"Neib Intersections: "<< nb->intersections().size() << std::endl; 00758 return true; 00759 } 00760 00761 } else if ( ((VSite*)c)->m_polynomial[(sz[0]-1)*st[0]]<EPSILON ) 00762 { 00763 q= new Point(this->xmax(),this->ymax(),0); 00764 std::cout<< "2.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00765 s->insert(q); 00766 s->insert( new Edge(l[0],q) ); 00767 ((VSite*)c)->s_intersections<< q; 00768 00769 00770 foreach( Cell2d *nb, this->e_neighbors ) 00771 foreach( Cell3d* cc, ((SELF*)nb)->m_objects ) 00772 if ( cc->is_active() ) 00773 { 00774 ((VSite*)cc)->w_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 foreach( Cell2d *nb, this->n_neighbors ) 00780 foreach( Cell3d* cc, ((SELF*)nb)->m_objects ) 00781 if ( cc->is_active() ) 00782 { 00783 ((VSite*)cc)->s_intersections<< q; 00784 std::cout<<"This Intersections: "<< this->intersections().size() << std::endl; 00785 std::cout<<"Neib Intersections: "<< nb->intersections().size() << std::endl; 00786 return true; 00787 } 00788 00789 } else if ( ((VSite*)c)->m_polynomial[sz[0]*sz[1]-1]<EPSILON ) 00790 { 00791 q= new Point(this->xmin(),this->ymax(),0); 00792 std::cout<< "3.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00793 s->insert(q); 00794 s->insert( new Edge(l[0],q) ); 00795 ((VSite*)c)->w_intersections<< q; 00796 return true; 00797 } else if ( ((VSite*)c)->m_polynomial[(sz[1]-1)*st[1]]<EPSILON ) 00798 { 00799 q= new Point(this->xmax(),this->ymin(),0); 00800 std::cout<< "4.add ("<< *q <<")->("<< *l[0] << ") in "<< *this<<std::endl; 00801 s->insert(q); 00802 s->insert( new Edge(l[0],q) ); 00803 ((VSite*)c)->e_intersections<< q; 00804 return true; 00805 } 00806 } 00807 } 00808 00809 if ( l.size()==0) 00810 { 00811 std::cout<< "SIZE ZERO, "<< *this<<std::endl; 00812 return true; 00813 00814 foreach( Cell3d* c, this->m_objects ) 00815 { 00816 sz= ((VSite*)c)->m_polynomial.rep().szs(); 00817 st= ((VSite*)c)->m_polynomial.rep().str(); 00818 if ( ((VSite*)c)->m_polynomial[0]<EPSILON ) 00819 { 00820 q= new Point(this->xmin(),this->ymin(),0); 00821 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00822 s->insert(q); 00823 ((VSite*)c)->n_intersections<< q; 00824 return true; 00825 } else if ( ((VSite*)c)->m_polynomial[(sz[0]-1)*st[0]]<EPSILON ) 00826 { 00827 q= new Point(this->xmax(),this->ymax(),0); 00828 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00829 s->insert(q); 00830 ((VSite*)c)->s_intersections<< q; 00831 return true; 00832 } else if ( ((VSite*)c)->m_polynomial[sz[0]*sz[1]-1]<EPSILON ) 00833 { 00834 q= new Point(this->xmin(),this->ymax(),0); 00835 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00836 s->insert( new Edge(l[0],q) ); 00837 ((VSite*)c)->w_intersections<< q; 00838 return true; 00839 } else if ( ((VSite*)c)->m_polynomial[(sz[1]-1)*st[1]]<EPSILON ) 00840 { 00841 q= new Point(this->xmax(),this->ymin(),0); 00842 std::cout<< "1.add ("<< *q <<") in "<< *this<<std::endl; 00843 s->insert(q); 00844 s->insert( new Edge(l[0],q) ); 00845 ((VSite*)c)->e_intersections<< q; 00846 return true; 00847 } 00848 } 00849 } 00850 00851 std::cout<< "nb_in= "<< this->nb_intersect() <<std::endl; 00852 //std::cout<< "box = "<< *this <<std::endl; 00853 //foreach(Point* q, this->intersections() ) 00854 //std::cout<< " "<< *q <<std::endl; 00855 // print((Cell3dImplicitCurve*)m_objects[0]); 00856 return true; 00857 }
virtual bool insert_singular | ( | Topology * | ) | [inline, virtual] |
Implements bcell< C, REF_OF(V) >.
Definition at line 74 of file bcell2d_voronoi_impl_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 91 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell3d, Cell3dImplicitCurve, and bcell2d_voronoi_impl_diagram< C, V >::m_objects.
00091 { 00092 Seq<Point*> l; 00093 Cell3dImplicitCurve* c; 00094 00095 foreach(Cell3d *m, this->m_objects) 00096 { 00097 std::cout<<"NEED intersections\n"; 00098 // c = dynamic_cast<Cell3dAlgebraicSurface*>(m); 00099 // l<< c->intersections(i); 00100 } 00101 return l; 00102 }
Seq< typename mmx::shape::bcell2d< C, V >::Point * > intersections | ( | ) | const [inline, virtual] |
Reimplemented from bcell2d< C, V >.
Definition at line 1196 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell2d, Cell3d, bcell2d_voronoi_impl_diagram< C, V >::m_objects, Seq< C, R >::reversed(), and Seq< C, R >::sort().
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), and bcell2d_voronoi_impl_diagram< C, V >::insert_regular().
01196 { 01197 Seq<Point *> s,e,n,w,r; 01198 //std::cout<<"intersections, "<<*this<<std::endl; 01199 Cell2d* cl; 01200 foreach (Cell3d* m, m_objects) 01201 { 01202 cl = dynamic_cast<Cell2d*>(m); 01203 s<< cl->s_intersections; 01204 e<< cl->e_intersections; 01205 n<< cl->n_intersections; 01206 w<< cl->w_intersections; 01207 } 01208 s.sort(this->coord<0>); 01209 e.sort(this->coord<1>); 01210 n.sort(this->coord<0>); 01211 w.sort(this->coord<1>); 01212 01213 r<<s; 01214 r<<e; 01215 r<<n.reversed(); 01216 r<<w.reversed(); 01217 01218 01219 return ( r ); 01220 }
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 1040 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects.
01040 { 01041 if ( this->is_bisector() ) 01042 { 01043 return (this->m_objects[0])->is_active(); 01044 } 01045 else 01046 { 01047 return true; 01048 } 01049 01050 }
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 678 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_intersected, bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d< C, V >::m_singular, and Seq< C, R >::size().
Referenced by bcell2d_voronoi_impl_diagram< C, V >::pair(), and bcell2d_voronoi_impl_diagram< C, V >::process_singular().
00678 { 00679 00680 if(this->m_objects.size() >1 && !m_intersected) { 00681 // std::cout<<"Intersecting inside box "<< this <<std::endl; 00682 for(unsigned i=0; i<this->m_objects.size();i++) 00683 for(unsigned j=i+1; j<this->m_objects.size(); j++) 00684 Intersection2dFactory::instance()->compute(this->m_singular, (Shape*)this->m_objects[i], (Shape*)this->m_objects[j], (BoundingBox)*this); 00685 m_intersected = true; 00686 } 00687 00688 if (this->m_singular.size() > 0) return true; 00689 return false; 00690 }
bool is_regular | ( | void | ) | [inline, virtual] |
Implements cell< C, V >.
Definition at line 664 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects.
00665 { 00666 //std::cout<<"bisector? "<< this->is_bisector()<<std::endl; 00667 if ( this->is_bisector() ) 00668 { 00669 return (this->m_objects[0])->is_regular(); 00670 } 00671 else 00672 { 00673 return false; 00674 } 00675 }
virtual bool is_touching | ( | void | ) | [inline, virtual] |
Definition at line 83 of file bcell2d_voronoi_impl_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 1053 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell2d, Cell3d, bcell2d_voronoi_impl_diagram< C, V >::m_objects, and sum().
Referenced by bcell2d_voronoi_impl_diagram< C, V >::insert_regular().
Reimplemented from bcell2d< C, V >.
Definition at line 1154 of file bcell2d_voronoi_impl_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.
01155 { 01156 foreach( Cell2d *c, this->s_neighbors ) 01157 if ( c->intersections(2).member(p) ) 01158 // foreach( Point* q, c->intersections(2) ) 01159 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01160 return c; 01161 01162 foreach( Cell2d *c, this->e_neighbors ) 01163 if ( c->intersections(3).member(p) ) 01164 // foreach( Point* q, c->intersections(3) ) 01165 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01166 return c; 01167 01168 foreach( Cell2d *c, this->n_neighbors ) 01169 if ( c->intersections(0).member(p) ) 01170 // foreach( Point* q, c->intersections(0) ) 01171 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01172 return c; 01173 01174 foreach( Cell2d *c, this->w_neighbors ) 01175 if ( c->intersections(1).member(p) ) 01176 // foreach( Point* q, c->intersections(1) ) 01177 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01178 return c; 01179 01180 /* 01181 01182 std::cout<<"Point "<<"("<<*p<<") not found in neighbs of "<< *this<<"( #neibs="<<this->neighbors().size() <<")"<<std::endl; 01183 01184 foreach( Cell2d* c, this->neighbors() ) 01185 { 01186 std::cout<< *c <<" ints:"<< ((SELF*)c)->intersections().size() <<std::endl; 01187 foreach(Point* q, c->intersections() ) 01188 std::cout<<"Point "<<q<<" ("<<*q<<")"<<std::endl; 01189 } 01190 */ 01191 01192 return NULL; 01193 }
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_impl_diagram< C, V >::Point * pair | ( | Point * | p, | |
int & | sgn | |||
) | [inline, virtual] |
Implements bcell2d< C, V >.
Definition at line 1066 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell2d, Cell3d, bcell2d_voronoi_impl_diagram< C, V >::is_intersected(), bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d_voronoi_impl_diagram< C, V >::signof(), bcell2d_voronoi_impl_diagram< C, V >::site(), and VSite.
01067 { 01068 01069 // std::cout<<(sgn>0?"+": "-")<<" pair of "<< *this<<"("<< p->x()<<","<<p->y()<<")"<<std::endl; 01070 01071 if ( this->is_intersected() ) 01072 { 01073 //std::cout<<"Reached Vertex bcell "<< *this << " ("<<sgn<<")"<<std::endl; 01074 //std::cout<<"sites are "<< this->m_sites <<std::endl; 01075 //foreach( Point* q, this->intersections() ) 01076 //std::cout<< *q<<std::endl; 01077 01078 //Find bisector containing p 01079 01080 unsigned st, cnt(0); 01081 foreach (Cell3d* mm, this->m_objects) 01082 { 01083 Cell2d* m = dynamic_cast<Cell2d*>(mm); 01084 01085 if ( m->intersections().member(p) ) 01086 // foreach( Point* q, m->intersections() ) 01087 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01088 { 01089 // p found in bisector m. 01090 //std::cout<< "Current bisector: "<< cnt <<std::endl; 01091 // deduce site from sgn 01092 st=this->site(sgn,cnt); 01093 //std::cout<< "Site is: "<< st <<std::endl; 01094 // jump to a different bisector containing st 01095 unsigned cnt2(0); 01096 foreach (Cell3d* cc, this->m_objects) 01097 { 01098 Cell2d* c = dynamic_cast<Cell2d*>(cc); 01099 if ( c!=m && 01100 (st==this->site(1,cnt2) || 01101 st==this->site(-1,cnt2) )) 01102 { 01103 sgn= this->signof(st,cnt2); 01104 // std::cout<< "New bisector: "<< cnt2 <<std::endl; 01105 // std::cout<< "New sign: "<< sgn <<std::endl; 01106 // std::cout<< "start="<< *(c->starting_point(sgn))<<std::endl; 01107 // std::cout<< "end ="<< *(c->pair(c->starting_point(sgn), sgn )) <<std::endl; 01108 01109 return c->pair(c->starting_point(sgn), sgn ); 01110 } 01111 cnt2++; 01112 } 01113 } 01114 cnt++; 01115 } 01116 01117 } else { 01118 01119 VSite* c; 01120 foreach (Cell3d* m, m_objects) 01121 { 01122 c = dynamic_cast<VSite*>(m); 01123 if ( c->intersections().member(p) ) 01124 // foreach( Point* q, c->intersections() ) 01125 // if ( abs(p->x()-q->x())<EPSILON && abs(p->y()-q->y())<EPSILON ) 01126 { 01127 //return c->pair(q,sgn); 01128 return c->pair(p,sgn); 01129 } 01130 } 01131 } 01132 std::cout<<"... Cell list pair trouble"<<std::endl; 01133 return NULL; 01134 }
bool process_singular | ( | ) | [inline, virtual] |
Definition at line 860 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell3dImplicitCurve, Seq< C, R >::clear(), bcell2d_voronoi_impl_diagram< C, V >::is_intersected(), bcell2d_voronoi_impl_diagram< C, V >::m_bisector, bcell2d_voronoi_impl_diagram< C, V >::m_objects, Seq< C, R >::push_back(), Seq< C, R >::size(), and VSite.
00860 { 00861 00862 // std::cout<<"VD, Inserting singular"<<*this<<std::endl; 00863 // ((voronoi2d<C,V>*)s)->m_singular_cells<< this; // does not work with forward declaration of voronoi2d 00864 00865 // foreach( Point* q, this->intersections() ) 00866 // std::cout<< *q<<" adr "<<q<<std::endl; 00867 00868 00869 //CellList* l= new CellList( (BoundingBox)(*this) ); 00870 Seq<Cell3dImplicitCurve*> l; 00871 Cell3dImplicitCurve* cc; 00872 00873 //std::cout<<"compute arrangement of bisectors"<<std::endl; 00874 //More than one bisector in the bcell: Compute arrangement 00875 Seq<Polynomial> pl; 00876 for ( unsigned i=0; i< this->m_objects.size(); i++ ) 00877 for ( unsigned j=i+1; j< this->m_objects.size(); j++ ) 00878 { 00879 pl.push_back( ((VSite*)(this->m_objects[i]))->m_polynomial ); 00880 pl.push_back( ((VSite*)(this->m_objects[j]))->m_polynomial ); 00881 00882 // cc= new Cell3dImplicitCurve( p, (BoundingBox)(*this), false ); 00883 cc= new Cell3dImplicitCurve( pl, (BoundingBox)(*this) ); 00884 00885 00886 //if ( cc->is_active() ) //commented:Put all curves, even inactive! 00887 l<< cc; 00888 pl.clear(); 00889 } 00890 00891 this->m_objects.clear(); 00892 this->m_objects<< l; 00893 this->is_intersected(); 00894 // foreach(Cell * m, this->m_objects) m->insert_singular(s); 00895 00896 return true; 00897 00898 this->m_bisector=true;// .. 00899 00900 //foreach(Cell * m, l ) m->insert_singular(s); 00901 00902 //if (this->m_singular.size()>0 ) 00903 // std::cout<<"VORONOI VERTEX COMPUTED in"<< *this <<std::endl; 00904 00905 }
void push_back | ( | bcell3d< C, V > * | cv, | |
unsigned | k | |||
) | [inline] |
Definition at line 110 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d_voronoi_impl_diagram< C, V >::m_sites, and Seq< C, R >::push_back().
void push_back | ( | bcell3d< C, V > * | cv | ) | [inline] |
Definition at line 104 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d_voronoi_impl_diagram< C, V >::m_sites, Seq< C, R >::push_back(), and Seq< C, R >::size().
Definition at line 115 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d_voronoi_impl_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 126 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_sites, and Seq< C, R >::size().
00126 { 00127 int c(0); 00128 for ( int u=0; u<i; u++) 00129 for ( int v=u+1; v<m_sites.size(); v++) 00130 c++; 00131 return c + j-i-1; }
int signof | ( | unsigned | st, | |
unsigned | bs = 0 | |||
) | [inline] |
Definition at line 147 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::count(), bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d_voronoi_impl_diagram< C, V >::m_sites, and Seq< C, R >::size().
Referenced by bcell2d_voronoi_impl_diagram< C, V >::pair().
00147 { 00148 00149 if (this->m_objects.size()==1 ) 00150 return ( st==m_sites[0]? -1 :1 ); 00151 00152 //std::cout<<"Sgnof " <<st<<"(bs="<<bs<<") on "<< *this<<"objs="<<this->m_objects.size()<<std::endl; 00153 00154 unsigned n=this->count() - 1; 00155 unsigned i,j(0),k(0); 00156 00157 for (i=0;i<=bs;i++) 00158 if ( k<n ) 00159 k++ ; 00160 else 00161 j++ ; 00162 00163 if (st==this->m_sites[j]) return (-1); 00164 if (st==this->m_sites[k]) return (1); 00165 00166 std::cout<<"problem at \"signof\" "<<i <<", "<< *this <<"sites= "<<m_sites<<std::endl; 00167 return 0; 00168 };
unsigned site | ( | int | sgn, | |
unsigned | bs = 0 | |||
) | [inline] |
Definition at line 133 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::count(), and bcell2d_voronoi_impl_diagram< C, V >::m_sites.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::pair().
Seq<unsigned> sites | ( | ) | const [inline] |
Definition at line 170 of file bcell2d_voronoi_impl_diagram.hpp.
References bcell2d_voronoi_impl_diagram< C, V >::m_sites.
00170 { 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 908 of file bcell2d_voronoi_impl_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_impl_diagram< C, V >::Point * starting_point | ( | int | sgn | ) | [inline, virtual] |
Implements bcell2d< C, V >.
Definition at line 1137 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell2d, Cell3d, bcell2d_voronoi_impl_diagram< C, V >::m_objects, and VSite.
01138 { 01139 // std::cout<<"starting point(voronoi diagram)"<<std::endl; 01140 01141 Cell2d* c; 01142 foreach (Cell3d* m, m_objects) 01143 { 01144 if ( m->is_active() ) 01145 { 01146 c = dynamic_cast<Cell2d*>(m); 01147 return ((VSite*)c)->starting_point(sgn); 01148 } 01149 } 01150 return NULL; 01151 }
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 921 of file bcell2d_voronoi_impl_diagram.hpp.
References Cell3d, Cell3dImplicitCurve, bcell2d< C, V >::connect0(), bcell2d< C, V >::connect1(), bcell2d< C, V >::disconnect(), bcell2d_voronoi_impl_diagram< C, V >::m_intersected, bcell2d_voronoi_impl_diagram< C, V >::m_objects, bcell2d< C, V >::m_singular, bcell2d_voronoi_impl_diagram< C, V >::m_sites, Seq< C, R >::min(), SELF, 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().
00921 { 00922 00923 //std::cout<<"Subdividing "<< this << "sites="<<this->m_sites <<std::endl; 00924 00925 typedef SELF Cell_t; 00926 00927 if(v==1) { 00928 left =(Cell*)new Cell_t(this->xmin(), this->xmax(), this->ymin(), c, m_intersected) ; 00929 right=(Cell*)new Cell_t(this->xmin(), this->xmax(), c, this->ymax(), m_intersected) ; 00930 00931 foreach(Point * p, this->m_singular) { 00932 if(p->y() <= c) 00933 ((Cell_t*) left)->m_singular << p ; 00934 else 00935 ((Cell_t*)right)->m_singular << p ; 00936 } 00937 00938 /* Update neighbors */ 00939 this->connect1( (Cell_t*)left, (Cell_t*)right); 00940 ((Cell_t*)left)->join1((Cell_t*)right); 00941 00942 } else {//v==0 00943 left = (Cell*)new Cell_t(this->xmin(), c, this->ymin(), this->ymax(), m_intersected) ; 00944 right= (Cell*)new Cell_t(c, this->xmax(), this->ymin(), this->ymax(), m_intersected) ; 00945 00946 foreach(Point * p, this->m_singular) { 00947 if(p->x() <= c ) 00948 ((Cell_t*)left)->m_singular << p ; 00949 else 00950 ((Cell_t*)right)->m_singular << p ; 00951 } 00952 00953 /* Update neighbors */ 00954 this->connect0((Cell_t*)left, (Cell_t*)right); 00955 ((Cell_t*)left)->join0((Cell_t*)right); 00956 00957 } 00958 00959 /* disconnect parent */ 00960 this->disconnect( ); 00961 00962 if (!this->is_bisector() ) 00963 { 00964 00965 Seq<VSite*> ll, rr; 00966 Cell3d * cv_left, * cv_right; 00967 00968 foreach(Cell3d* cv, this->m_objects) { 00969 cv->subdivide( cv_left, cv_right); 00970 ll<< (VSite*)cv_left; 00971 rr<< (VSite*)cv_right; 00972 } 00973 00974 /* Filtering sites that are "far away" */ 00975 //1. find minimum upper bound 00976 //2. remove all bcells whose lower bound is bigger than that 00977 //std::cout<<"Filtering Cells "<< cv_left<<" , "<<cv_right<<std::endl; 00978 00979 /* Left bcell */ 00980 double mm; 00981 unsigned cnt; 00982 mm= ( (VSite*)ll.min(this->comp_up) )->upper(); 00983 00984 cnt=0; 00985 foreach(VSite* vs, ll) 00986 { 00987 //std::cout<<"check "<< m_sites[cnt]<<std::endl; 00988 if ( !this->over(vs,mm) ) 00989 { 00990 ((Cell_t*)left)->push_back( vs, m_sites[cnt] ); 00991 //std::cout<<"added "<< m_sites[cnt]<<std::endl; 00992 } 00993 cnt++; 00994 //else 00995 //{ 00996 //delete vs; 00997 //ll.erase( ll.search(vs) ) ; 00998 //} 00999 } 01000 01001 /* Right bcell */ 01002 mm= ( (VSite*)rr.min(this->comp_up) )->upper(); 01003 01004 cnt=0; 01005 foreach(VSite* vs, rr) 01006 { 01007 if ( !this->over(vs,mm) ) 01008 { 01009 ((Cell_t*)right)->push_back( vs, m_sites[cnt] ); 01010 //((Cell_t*)right)->m_objects<< (Cell*)vs; 01011 } 01012 //else 01013 //{ 01014 //delete vs; 01015 //ll.erase( ll.search(vs) ) ; 01016 //} 01017 cnt++; 01018 } 01019 } 01020 else 01021 {//bisector box 01022 01023 Cell3d * cv_left, * cv_right; 01024 //std::cout<<"bisector subdiv " <<std::endl; 01025 this->m_objects[0]->subdivide( cv_left, cv_right); 01026 ((Cell_t*)left)->push_bisector( (Cell3dImplicitCurve*)cv_left, m_sites ); 01027 ((Cell_t*)right)->push_bisector((Cell3dImplicitCurve*)cv_right, m_sites ); 01028 01029 ((Cell_t*)left)->m_bisector=true; 01030 ((Cell_t*)right)->m_bisector=true; 01031 01032 } 01033 01034 // std::cout<<"ok " <<std::endl; 01035 }
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 180 of file bcell2d_voronoi_impl_diagram.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), and bcell2d_voronoi_impl_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 179 of file bcell2d_voronoi_impl_diagram.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::is_intersected(), and bcell2d_voronoi_impl_diagram< C, V >::subdivide().
Definition at line 171 of file bcell2d_voronoi_impl_diagram.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_impl_diagram< C, V >::count(), bcell2d_voronoi_impl_diagram< C, V >::func(), bcell2d_voronoi_impl_diagram< C, V >::insert_regular(), bcell2d_voronoi_impl_diagram< C, V >::intersections(), bcell2d_voronoi_impl_diagram< C, V >::is_active(), bcell2d_voronoi_impl_diagram< C, V >::is_intersected(), bcell2d_voronoi_impl_diagram< C, V >::is_regular(), bcell2d_voronoi_impl_diagram< C, V >::nb_intersect(), bcell2d_voronoi_impl_diagram< C, V >::pair(), bcell2d_voronoi_impl_diagram< C, V >::process_singular(), bcell2d_voronoi_impl_diagram< C, V >::push_back(), bcell2d_voronoi_impl_diagram< C, V >::push_bisector(), bcell2d_voronoi_impl_diagram< C, V >::signof(), bcell2d_voronoi_impl_diagram< C, V >::starting_point(), bcell2d_voronoi_impl_diagram< C, V >::subdivide(), and bcell2d_voronoi_impl_diagram< C, V >::~bcell2d_voronoi_impl_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 178 of file bcell2d_voronoi_impl_diagram.hpp.
Referenced by bcell2d_voronoi_impl_diagram< C, V >::compute_boundary(), bcell2d_voronoi_impl_diagram< C, V >::push_back(), bcell2d_voronoi_impl_diagram< C, V >::push_bisector(), bcell2d_voronoi_impl_diagram< C, V >::signature(), bcell2d_voronoi_impl_diagram< C, V >::signof(), bcell2d_voronoi_impl_diagram< C, V >::site(), bcell2d_voronoi_impl_diagram< C, V >::sites(), and bcell2d_voronoi_impl_diagram< C, V >::subdivide().
bool m_treated [protected] |
Definition at line 181 of file bcell2d_voronoi_impl_diagram.hpp.
Referenced by bcell2d_voronoi_impl_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().