24 typedef std::shared_ptr<Edge> (*ECreator)(
int,
int);
25 typedef std::map<EdgeKey<false>, std::shared_ptr<Edge>>
EMap;
29 typedef std::shared_ptr<Triangle> (*TCreator)(
int,
int,
int);
30 typedef std::map<TriangleKey<true>, std::shared_ptr<Triangle>>
TMap;
43 std::weak_ptr<Triangle> T[2];
57 std::weak_ptr<Edge> E[3];
61 std::weak_ptr<Triangle> T[3];
67 ETManifoldMesh(ECreator eCreator =
nullptr, TCreator tCreator =
nullptr);
78 EMap
const& GetEdges()
const;
79 TMap
const& GetTriangles()
const;
87 bool AssertOnNonmanifoldInsertion(
bool doAssert);
93 virtual std::shared_ptr<Triangle> Insert(
int v0,
int v1,
int v2);
97 virtual bool Remove(
int v0,
int v1,
int v2);
100 virtual void Clear();
108 bool IsClosed()
const;
114 bool IsOriented()
const;
122 void GetComponents(std::vector<std::vector<std::shared_ptr<Triangle>>>&
components)
const;
127 static std::shared_ptr<Edge> CreateEdge(
int v0,
int v1);
132 static std::shared_ptr<Triangle> CreateTriangle(
int v0,
int v1,
int v2);
140 void DepthFirstSearch(std::shared_ptr<Triangle>
const& tInitial,
141 std::map<std::shared_ptr<Triangle>,
int>& visited,
142 std::vector<std::shared_ptr<Triangle>>& component)
const;
bool mAssertOnNonmanifoldInsertion
std::map< TriangleKey< true >, std::shared_ptr< Triangle > > TMap
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
std::map< EdgeKey< false >, std::shared_ptr< Edge > > EMap
GLfloat GLfloat GLfloat v2
GLenum GLenum GLuint components