proj home

Files   Classes   Functions   Hierarchy  

virtualtetrahedron.cpp

Go to the documentation of this file.
00001 #include <cassert>
00002 
00003 #include <virtualtetrahedron.h>
00004 
00005 
00006 virtualtetrahedron::virtualtetrahedron()
00007 {
00008   v[0]=0;
00009   v[1]=1;
00010   v[2]=2;
00011   v[3]=3;
00012 }
00013 
00014 bool const virtualtetrahedron::validstate() const 
00015 {
00016   uint k;
00017   uint i;
00018   bool valid;
00019   for (k=0; k<4; ++k)
00020   {
00021     valid=false;
00022     for (i=0; (i<4)&&(valid==false); ++i)
00023     {
00024       if (v[i]==k)
00025         valid=true;
00026     }
00027      
00028     if (valid==false)
00029       return false;
00030   }
00031   
00032   return true; 
00033 }
00034 
00035 void virtualtetrahedron::anticlockwise()
00036 {
00037   uint k = v[0];
00038   v[0] = v[1];
00039   v[1] = v[2];
00040   v[2] = k;
00041 }
00042 
00043 void virtualtetrahedron::clockwise()
00044 {
00045   uint k = v[2];
00046   v[2] = v[1];
00047   v[1] = v[0];
00048   v[0] = k;
00049 }
00050 
00051 void virtualtetrahedron::left()
00052 {
00053   uint a = v[0];
00054   uint b = v[2];
00055   uint c = v[3];
00056   uint d = v[1];
00057 
00058   v[0] = a;
00059   v[1] = b;
00060   v[2] = c;
00061   v[3] = d;
00062 }
00063 
00064 void virtualtetrahedron::right()
00065 {
00066   uint a = v[2];
00067   uint b = v[1];
00068   uint c = v[3];
00069   uint d = v[0];
00070 
00071   v[0] = a;
00072   v[1] = b;
00073   v[2] = c;
00074   v[3] = d;
00075 }
00076 
00077 void virtualtetrahedron::down()
00078 {
00079   uint a = v[1];
00080   uint b = v[0];
00081   uint c = v[3];
00082   uint d = v[2];
00083 
00084   v[0] = a;
00085   v[1] = b;
00086   v[2] = c;
00087   v[3] = d;
00088 }
00089 
00090 
00091   // v[0..2] anticlockwise, v[3]=base
00092 void virtualtetrahedron::set(uintc base)
00093 {
00094   switch (base)
00095   {
00096     case 0:
00097       v[0] = 2;
00098       v[1] = 1;
00099       v[2] = 3;
00100       break;
00101 
00102     case 1:
00103       v[0] = 2;
00104       v[1] = 3;
00105       v[2] = 0;
00106       break;
00107 
00108     case 2:
00109       v[0] = 1;
00110       v[1] = 0;
00111       v[2] = 3;
00112       break;
00113 
00114     case 3:
00115       v[0] = 1;
00116       v[1] = 2;
00117       v[2] = 0;
00118       break;
00119 
00120     default:
00121       assert(false);
00122       return;
00123   }
00124 
00125   v[3] = base;
00126 }
00127 
00128 ostream & operator << (ostream& os, virtualtetrahedron const & x)
00129 {
00130   os << x.v[0] << " " << x.v[1] << " " << x.v[2] << " " << x.v[3];
00131   return os;
00132 }
00133 
00134 

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