proj home

Files   Classes   Functions   Hierarchy  

d4tri Class Reference

: A linked tetrahedron data structure. More...

#include <d4tri.h>

Collaboration diagram for d4tri:

List of all members.

Public Member Functions

uintc piInverse (uintc gpt) const
uintc piInverse (bool &res, uintc neib) const
uintc niInverse (uintc neib) const
uintc niInverse (bool &res, uintc neib) const
 d4tri ()
 d4tri (uintc a, uintc b, uintc c, uintc d, uintc na=0, uintc nb=0, uintc nc=0, uintc nd=0)
void construct (uintc a, uintc b, uintc c, uintc d, uintc na, uintc nb, uintc nc, uintc nd)
void getanticlockwiseface (uint &a, uint &b, uint &c, uintc face) const
void getclockwiseface (uint &a, uint &b, uint &c, uintc face) const
boolc isonboundary () const
boolc isavertex (uintc gpt) const
void setnull ()
boolc isnull () const
boolc hassamepoints (d4tri const &w) const
void niReset (uintc from, uintc to)
uintniFrompiInverse (uintc gpt)
ostreamprint (ostream &os) const

Public Attributes

uint pi [4]
uint ni [4]


Detailed Description

: A linked tetrahedron data structure.

Definition at line 13 of file d4tri.h.


Constructor & Destructor Documentation

d4tri::d4tri (  ) 

Definition at line 9 of file d4tri.cpp.

References ni, and pi.

00010 {
00011   for (uint i=0; i<4; ++i)
00012   {
00013     pi[i] = 0;
00014     ni[i] = 0;
00015   }
00016 }

d4tri::d4tri ( uintc  a,
uintc  b,
uintc  c,
uintc  d,
uintc  na = 0,
uintc  nb = 0,
uintc  nc = 0,
uintc  nd = 0 
)

Definition at line 19 of file d4tri.cpp.

00029 { 
00030   construct(a,b,c,d,na,nb,nc,nd); 
00031 }


Member Function Documentation

void d4tri::construct ( uintc  a,
uintc  b,
uintc  c,
uintc  d,
uintc  na,
uintc  nb,
uintc  nc,
uintc  nd 
)

Definition at line 213 of file d4tri.cpp.

Referenced by d4tess::tet2to3_().

00223 {
00224   pi[0] = a;
00225   pi[1] = b;
00226   pi[2] = c;
00227   pi[3] = d;
00228   ni[0] = na;
00229   ni[1] = nb;
00230   ni[2] = nc;
00231   ni[3] = nd;
00232 };

void d4tri::getanticlockwiseface ( uint a,
uint b,
uint c,
uintc  face 
) const

Definition at line 236 of file d4tri.cpp.

Referenced by d4mingreedy2::eval(), and d4tess::tet2to3_().

00242 {
00243   switch (face)
00244   {
00245     case 0:
00246       a=2; b=1; c=3;
00247       break;
00248 
00249     case 1:
00250       a=0; b=2; c=3;
00251       break;
00252 
00253     case 2:
00254       a=1; b=0; c=3;
00255       break;
00256 
00257     case 3:
00258       a=0; b=1; c=2;
00259       break;
00260 
00261     default:
00262       assert(false);
00263   }
00264 }

void d4tri::getclockwiseface ( uint a,
uint b,
uint c,
uintc  face 
) const

Definition at line 267 of file d4tri.cpp.

Referenced by d4minboundary::eval(), and d4tess::tet2to3().

00273 {
00274   switch (face)
00275   {
00276     case 0:
00277       a=3; b=1; c=2;
00278       break;
00279 
00280     case 1:
00281       a=3; b=2; c=0;
00282       break;
00283 
00284     case 2:
00285       a=3; b=0; c=1;
00286       break;
00287 
00288     case 3:
00289       a=2; b=1; c=0;
00290       break;
00291 
00292     default:
00293       assert(false);
00294   }
00295 
00296 //  uint a2,c2;
00297 //  getanticlockwiseface(a2,b,c2,face);
00298 
00299 //  a=c2;
00300 //  c=a2;
00301 }

boolc d4tri::hassamepoints ( d4tri const &  w  )  const

Definition at line 331 of file d4tri.cpp.

References pi, and sumofpoints().

00332 {
00333   if (sumofpoints()!=w.sumofpoints())
00334     return false;
00335 
00336   for (uint i=0; i<4; ++i)
00337   {
00338     bool res(false);
00339     for (uint k=0; k<4; ++k)
00340     {
00341       if (w.pi[k]==pi[i])
00342       {
00343         res=true;
00344         k=3;
00345       }
00346     }
00347     if (res==false)
00348       return false;
00349   }
00350 
00351   return true;
00352 }

boolc d4tri::isavertex ( uintc  gpt  )  const

Definition at line 157 of file d4tri.cpp.

References pi.

00158 {
00159   if (gpt==pi[0]) return true;
00160   if (gpt==pi[1]) return true;
00161   if (gpt==pi[2]) return true;
00162   if (gpt==pi[3]) return true;
00163 
00164   return false;
00165 }

boolc d4tri::isnull (  )  const

Definition at line 303 of file d4tri.cpp.

References ni, and pi.

Referenced by writebaseobj::draw(), writewindingobj::draw(), writegridobj::draw(), and writesurfaceobj::draw().

00304 {
00305   for (uint i=0; i<4; ++i)
00306   {
00307     if (pi[i]!=0)
00308       return false;
00309 
00310     if (ni[i]!=0)
00311       return false;
00312   }
00313 
00314   return true;
00315 }

boolc d4tri::isonboundary (  )  const

Definition at line 111 of file d4tri.cpp.

References ni.

00112 {
00113   if (ni[0]==0) return true;
00114   if (ni[1]==0) return true;
00115   if (ni[2]==0) return true;
00116   if (ni[3]==0) return true;
00117   
00118   return false;
00119 }

uint& d4tri::niFrompiInverse ( uintc  gpt  )  [inline]

Definition at line 99 of file d4tri.h.

References ni, and piInverse().

00100     { return ni[ piInverse(gpt) ]; }

uintc d4tri::niInverse ( bool res,
uintc  neib 
) const

Definition at line 138 of file d4tri.cpp.

00142 {  
00143   res=true;
00144 
00145   if (ni[0]==neib) return 0;
00146   if (ni[1]==neib) return 1;
00147   if (ni[2]==neib) return 2;
00148   if (ni[3]==neib) return 3;
00149 
00150   res=false;
00151   return 4; // Return crap.
00152 }

uintc d4tri::niInverse ( uintc  neib  )  const [inline]

Definition at line 36 of file d4tri.h.

References ni.

Referenced by d4mingreedy2::eval(), d4minboundary::eval(), d4tess::isconnected(), d4tess::isconvex(), niReset(), d4tess::tet2to3(), d4tess::tet2to3_(), d4tess::tetmovedown(), d4tess::tetmoveleft(), and d4tess::tetmoveright().

00037   {  
00038     if (ni[0]==neib) return 0;
00039     if (ni[1]==neib) return 1;
00040     if (ni[2]==neib) return 2;
00041     if (ni[3]==neib) return 3;
00042 
00043     assert(false);
00044     return 4; // Return crap.
00045   }  

void d4tri::niReset ( uintc  from,
uintc  to 
) [inline]

Definition at line 95 of file d4tri.h.

References ni, and niInverse().

00096     { ni[ niInverse(from) ] = to; }

uintc d4tri::piInverse ( bool res,
uintc  neib 
) const

Definition at line 69 of file d4tri.cpp.

00073 {
00074   assert(gpt!=0);
00075 
00076   res=true;
00077 
00078   if (pi[0]==gpt) return 0;
00079   if (pi[1]==gpt) return 1;
00080   if (pi[2]==gpt) return 2;
00081   if (pi[3]==gpt) return 3;
00082 
00083   res=false;
00084   return 4; // Return crap.
00085 }

uintc d4tri::piInverse ( uintc  gpt  )  const [inline]

Definition at line 22 of file d4tri.h.

References pi.

Referenced by d4minboundary::eval(), niFrompiInverse(), d4tess::tet2to3(), d4tess::tet2to3_(), d4tess::tetmovedown(), d4tess::tetmoveleft(), and d4tess::tetmoveright().

00023   {
00024     assert(gpt!=0);
00025 
00026     if (pi[0]==gpt) return 0;
00027     if (pi[1]==gpt) return 1;
00028     if (pi[2]==gpt) return 2;
00029     if (pi[3]==gpt) return 3;
00030 
00031     assert(false);
00032     return 4; // Return crap.
00033   }

ostream & d4tri::print ( ostream os  )  const

Definition at line 171 of file d4tri.cpp.

References ni, and pi.

Referenced by operator<<().

00172 {
00173   for (uint i=0; i<4; ++i)
00174     os << pi[i] << " ";
00175 
00176   os << "  ";
00177 
00178   for (uint i=0; i<4; ++i)
00179     os << ni[i] << " ";
00180 
00181   return os;
00182 }

void d4tri::setnull (  ) 

Definition at line 317 of file d4tri.cpp.

References ni, and pi.

00318 {
00319   for (uint i=0; i<4; ++i)
00320   {
00321     pi[i]=0;
00322     ni[i]=0;
00323   }
00324 }


Member Data Documentation


The documentation for this class was generated from the following files:

Generated on Fri Mar 4 00:49:54 2011 for Chelton Evans Source by  doxygen 1.5.8