Files Classes Functions Hierarchy
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
1.5.8