proj home

Files   Classes   Functions   Hierarchy  

virtualtriangle.cpp

Go to the documentation of this file.
00001 #include <cassert>
00002 #include <algorithm>
00003 using namespace std;
00004 
00005 #include <virtualtriangle.h>
00006 
00007 virtualtriangle::virtualtriangle()
00008 {
00009   set(0,1,2);
00010 }
00011 
00012 void virtualtriangle::clockwise()
00013 {
00014   uint k=v[2];
00015   v[2]=v[1];
00016   v[1]=v[0];
00017   v[0]=k;
00018 }
00019 
00020 void virtualtriangle::anticlockwise()
00021 {
00022   // Left shift
00023   uint k=v[0];
00024   v[0]=v[1];
00025   v[1]=v[2];
00026   v[2]=k;
00027 }
00028 
00029 void virtualtriangle::set(uintc a, uintc b, uintc c)
00030 {
00031   v[0]=a; 
00032   v[1]=b; 
00033   v[2]=c; 
00034 }
00035 
00036 
00037 void virtualtriangle::set(uintc base)
00038 {
00039   switch(base)
00040   {
00041     case 0:  v[0]=1; v[1]=2; v[2]=0;
00042       break;
00043 
00044     case 1:  v[0]=2; v[1]=0; v[2]=1;
00045       break;
00046 
00047     case 2:  v[0]=0; v[1]=1; v[2]=2;
00048       break;
00049 
00050     default:
00051       assert(false);
00052   }
00053 }
00054 
00055 bool const virtualtriangle::validstate() const 
00056 {
00057   uint v2[3];
00058   for (uint i=0; i<3; ++i)
00059     v2[i] = v[i];
00060 
00061   sort(v2,v2+3);
00062   for (uint i=0; i<3; ++i)
00063     if (v2[i]!=i)
00064       return false;
00065 
00066   return true;
00067 }
00068 
00069 

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