euler::loop_t Class Reference

#include <loop.h>

List of all members.

Public Member Functions

void del_single_vertex_edge_pair ()
void set_loop_head (edge_t *head)
edge_tmev (edge_t *e, point_t const &p)
 same as euler::solid_t::mev(e, e, p).
void kev (edge_t *e)
 same as euler::solid_t::kev(e), except e and its opposite have to be on the same loop.
int total_vertices () const
 multiple counting vertices with multiple occurence in the loop.

Public Attributes

face_tf
edge_te
loop_tpre
loop_tnxt

Private Member Functions

 loop_t (face_t *f)
 loop_t (face_t *f, vertex_t *v)
 ~loop_t ()
edge_tmev (edge_t *e, vertex_t *v)
 same as euler::solid_t::mev(e, e, p).
void append_to_loop_list ()

Friends

class face_t


Detailed Description

Examples:

test-cube-with-hole-2.cc, test-cube-with-hole.cc, test-cube.cc, and test-cylinder-2.cc.

Definition at line 25 of file loop.h.


Constructor & Destructor Documentation

euler::loop_t::loop_t face_t f  )  [private]
 

Definition at line 21 of file loop.cpp.

References append_to_loop_list().

00021                              : f(f), e(0), pre(0), nxt(0) 
00022   { 
00023     append_to_loop_list();
00024   }

euler::loop_t::loop_t face_t f,
vertex_t v
[private]
 

Definition at line 25 of file loop.cpp.

References append_to_loop_list(), and euler::vertex_t::e.

00025                                           : f(f), e(0), pre(0), nxt(0) 
00026   {
00027     append_to_loop_list();
00028     new edge_t(v, this);
00029     new edge_t(v, this->e);
00030   }

euler::loop_t::~loop_t  )  [private]
 

Definition at line 32 of file loop.cpp.

References e, and euler::edge_t::nxt.

00033   {
00034     if(! e) return;
00035     
00036     edge_t *e0 = e;
00037     do
00038     {
00039       edge_t *temp = e;
00040       e = e->nxt;
00041       delete temp;
00042     }
00043     while(e != e0);
00044   }


Member Function Documentation

void euler::loop_t::append_to_loop_list  )  [private]
 

Definition at line 49 of file loop.cpp.

References f, euler::face_t::l, nxt, and pre.

Referenced by loop_t().

00050   {
00051     if(f->l) 
00052     {
00053       loop_t* lp = f->l; 
00054       for(; lp->nxt; lp = lp->nxt);
00055       lp->nxt = this;
00056       pre = lp;
00057     }
00058     else
00059       f->l = this;
00060   }

void euler::loop_t::del_single_vertex_edge_pair  ) 
 

Examples:
test-cube-with-hole-2.cc, test-cube-with-hole.cc, test-cube.cc, and test-cylinder-2.cc.

Definition at line 63 of file loop.cpp.

References e, euler::edge_t::nxt, euler::edge_t::pre, and euler::edge_t::v.

Referenced by euler::solid_t::block(), and main().

00064   {
00065     edge_t *e1=0, *e2=0, *cur = e;
00066     do
00067     {
00068       if(! cur->o)
00069         if(! cur->nxt->o)
00070         {
00071           e1 = cur, e2 = cur->nxt;
00072           break;
00073         }
00074     }
00075     while( (cur=cur->nxt) != e );
00076     
00077     if(!e1 || !e2) return;
00078 
00079     assert(e1->v == e2->v);
00080     
00081     if(e->nxt->nxt->nxt != e)
00082     {
00083       if(e == e1 || e == e2)
00084         e = e2->nxt;
00085 
00086       e2->nxt->pre = e1->pre;
00087       e1->pre->nxt = e2->nxt;
00088 
00089       delete e1; delete e2;
00090     }
00091   }

void euler::loop_t::kev edge_t e  ) 
 

same as euler::solid_t::kev(e), except e and its opposite have to be on the same loop.

Definition at line 50 of file kev.cpp.

References euler::solid_t::_kev(), e, f, euler::edge_t::l, euler::edge_t::o, and euler::face_t::s.

00051   { 
00052     assert(e->l == e->o->l);
00053     f->s->_kev(e);
00054   }  

edge_t * euler::loop_t::mev edge_t e,
vertex_t v
[private]
 

same as euler::solid_t::mev(e, e, p).

Definition at line 60 of file mev.cpp.

References e, f, euler::solid_t::mev(), and euler::face_t::s.

00061   { 
00062     return f->s->mev(e, e, v);
00063   }  

edge_t * euler::loop_t::mev edge_t e,
point_t const &  p
 

same as euler::solid_t::mev(e, e, p).

Examples:
test-cube-with-hole-2.cc, test-cube-with-hole.cc, test-cube.cc, and test-cylinder-2.cc.

Definition at line 55 of file mev.cpp.

References e, f, euler::solid_t::mev(), and euler::face_t::s.

Referenced by euler::face_t::arc(), euler::solid_t::block(), main(), euler::face_t::mekr(), euler::solid_t::rsweep_face(), and euler::solid_t::rsweep_wire().

00056   { 
00057     return f->s->mev(e, e, p);
00058   }  

void euler::loop_t::set_loop_head edge_t head  )  [inline]
 

Examples:
test-sphere.cc.

Definition at line 29 of file loop.h.

References e.

Referenced by main().

00029 { e = head; }

int euler::loop_t::total_vertices  )  const
 

multiple counting vertices with multiple occurence in the loop.

Definition at line 93 of file loop.cpp.

References e, and euler::edge_t::nxt.

Referenced by euler::solid_t::kffmh(), euler::solid_t::rsweep_face(), and euler::solid_t::rsweep_wire().

00094   {
00095     int total = 0;
00096     edge_t *cur = e;
00097     do
00098     {
00099       total++;
00100     }
00101     while( (cur=cur->nxt) != e );
00102     return total;
00103   }


Friends And Related Function Documentation

friend class face_t [friend]
 

Definition at line 44 of file loop.h.


Member Data Documentation

edge_t* euler::loop_t::e
 

Examples:
test-cube-with-hole-2.cc, test-cube-with-hole.cc, test-cube.cc, test-cylinder-2.cc, and test-sphere.cc.

Definition at line 35 of file loop.h.

Referenced by euler::solid_t::block(), euler::solid_t::del_edge_pair(), del_single_vertex_edge_pair(), euler::solid_t::disk(), euler::edge_t::edge_t(), euler::solid_t::kef(), euler::face_t::kemr(), kev(), euler::solid_t::kffmh(), main(), euler::solid_t::mef(), euler::face_t::mekr(), mev(), euler::operator<<(), euler::solid_t::rsweep_face(), euler::solid_t::rsweep_wire(), set_loop_head(), total_vertices(), euler::solid_t::tsweep_face(), and ~loop_t().

face_t* euler::loop_t::f
 

Examples:
test-cube-with-hole.cc, and test-cube.cc.

Definition at line 34 of file loop.h.

Referenced by append_to_loop_list(), euler::solid_t::block(), euler::solid_t::kef(), kev(), euler::solid_t::kev(), main(), mev(), euler::solid_t::mev(), and euler::operator<<().

loop_t * euler::loop_t::nxt
 

Examples:
test-cube-with-hole.cc.

Definition at line 36 of file loop.h.

Referenced by euler::solid_t::add_face_to(), append_to_loop_list(), euler::solid_t::assert_consistent_B_rep(), euler::face_t::del_loop(), euler::face_t::kemr(), euler::solid_t::kffmh(), euler::solid_t::kfmrh(), main(), euler::operator<<(), euler::solid_t::rsweep_face(), euler::solid_t::tsweep_face(), and euler::face_t::~face_t().

loop_t* euler::loop_t::pre
 

Definition at line 36 of file loop.h.

Referenced by euler::solid_t::add_face_to(), append_to_loop_list(), and euler::face_t::del_loop().


The documentation for this class was generated from the following files:
Generated on Wed Aug 30 16:27:59 2006 for euler by  doxygen 1.4.6