00001 00005 #ifndef LAYOUT_CM 00006 #define LAYOUT_CM 00007 #include <stack> 00008 #include <vector> 00009 #include "Mesh.h" 00010 00021 class Layout 00022 { 00023 private: 00024 Mesh * mesh; 00025 00026 00028 std::stack<Edge *> edgesToFacesTodo; 00029 00034 void putFaceFrom(Edge * e); 00035 00036 00037 public: 00038 Layout(Mesh * _mesh); 00039 00054 void computeEdgeLengthAndAngles(); 00055 00063 void layoutMesh(); 00064 00074 void movePatches(); 00075 00085 bool validCuts(); 00086 00087 ~Layout(void); 00088 }; 00089 00090 #endif 00091