MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/PositionBasedDynamics / buildNeighbors

Method buildNeighbors

Utils/IndexedTetMesh.cpp:55–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

53}
54
55void IndexedTetMesh::buildNeighbors()
56{
57 typedef std::vector<unsigned int> VertexEdges;
58
59 m_verticesEdges.clear(); // to delete old pointers
60 m_verticesEdges.resize(numVertices());
61
62 m_verticesFaces.clear(); // to delete old pointers
63 m_verticesFaces.resize(numVertices());
64
65 m_verticesTets.clear(); // to delete old pointers
66 m_verticesTets.resize(numVertices());
67
68 m_faces.clear();
69 m_edges.clear();
70 m_tets.resize(numTets());
71
72 for(unsigned int i=0; i < numTets(); i++)
73 {
74 // tet edge indices: {0,1, 0,2, 0,3, 1,2, 1,3, 2,3}
75 const unsigned int edges[12] = { m_tetIndices[4*i], m_tetIndices[4*i+1],
76 m_tetIndices[4*i], m_tetIndices[4*i+2],
77 m_tetIndices[4*i], m_tetIndices[4*i+3],
78 m_tetIndices[4*i+1], m_tetIndices[4*i+2],
79 m_tetIndices[4*i+1], m_tetIndices[4*i+3],
80 m_tetIndices[4*i+2], m_tetIndices[4*i+3]};
81
82 // tet face indices: {0,1,2, 1,3,2, 3,0,2, 1,0,3} => clock wise
83 /*const unsigned int faces[12] = { m_tetIndices[4*i], m_tetIndices[4*i+1], m_tetIndices[4*i+2],
84 m_tetIndices[4*i+1], m_tetIndices[4*i+3], m_tetIndices[4*i+2],
85 m_tetIndices[4*i+3], m_tetIndices[4*i], m_tetIndices[4*i+2],
86 m_tetIndices[4*i+1], m_tetIndices[4*i], m_tetIndices[4*i+3]};*/
87
88 // tet face indices: {1,0,2, 3,1,2, 0,3,2, 0,1,3} => counter clock wise
89 const unsigned int faces[12] = { m_tetIndices[4*i+1], m_tetIndices[4*i], m_tetIndices[4*i+2],
90 m_tetIndices[4*i+3], m_tetIndices[4*i+1], m_tetIndices[4*i+2],
91 m_tetIndices[4*i], m_tetIndices[4*i+3], m_tetIndices[4*i+2],
92 m_tetIndices[4*i], m_tetIndices[4*i+1], m_tetIndices[4*i+3]};
93
94 for(unsigned int j=0u; j < 4; j++)
95 {
96 // add vertex-tet connection
97 const unsigned int vIndex = m_tetIndices[4*i+j];
98 m_verticesTets[vIndex].push_back(i);
99 }
100
101 for(unsigned int j=0u; j < 4; j++)
102 {
103 // add face information
104 const unsigned int a = faces[j*3+0];
105 const unsigned int b = faces[j*3+1];
106 const unsigned int c = faces[j*3+2];
107 unsigned int face = 0xffffffff;
108 // find face
109 for(unsigned int k=0; k < m_verticesFaces[a].size(); k++)
110 {
111 // Check if we already have this face in the list
112 const unsigned int& faceIndex = m_verticesFaces[a][k];

Callers 6

UtilitiesModuleFunction · 0.45
initMeshMethod · 0.45
initMeshMethod · 0.45
initMeshMethod · 0.45
createSurfaceMeshMethod · 0.45
loadMeshMethod · 0.45

Calls 4

clearMethod · 0.45
resizeMethod · 0.45
push_backMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected