00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef FACE_HPP_
00031 #define FACE_HPP_
00032
00033 #include "UblasCustomFunctions.hpp"
00034 #include "Exception.hpp"
00035 #include "VertexAndAngle.hpp"
00036 #include <vector>
00037
00038
00042 template <unsigned DIM>
00043 class Face
00044 {
00045 private:
00046
00054 std::vector< c_vector<double, DIM>* > mVertices;
00055
00062 void Increment(typename std::vector< c_vector<double, DIM>* >::iterator& rIterator,
00063 Face<DIM>& rFace) const;
00064
00065 public:
00066
00073 bool operator==(Face<DIM>& rOtherFace);
00074
00080 bool operator!=(Face<DIM>& rOtherFace);
00081
00085 Face<DIM> operator-();
00086
00093 double GetPerimeter() const;
00094
00101 double GetArea() const;
00102
00106 unsigned GetNumVertices() const;
00107
00111 std::vector< c_vector<double, DIM>* > GetVertices() const;
00112
00116 void OrderVerticesAntiClockwise();
00117
00123 void AddVertex(c_vector<double, DIM>* pVertex);
00124
00128 unsigned GetNumVertices();
00129
00135 c_vector<double, DIM>& rGetVertex(unsigned index);
00136
00140 std::vector< c_vector<double, DIM>* >& rGetVertices();
00141
00148 void SetVertex(unsigned index, c_vector<double, DIM>* pNewLocation);
00149 };
00150
00151 #endif