9 #ifndef SNAKEENGINE_H_INCLUDED
10 #define SNAKEENGINE_H_INCLUDED
19 #define TEST_SNAKEENGINE
30 #include <unordered_map>
43 void SpawnAtVertex(
snake &snakein,
int indVert);
44 void SpawnAtVertexVert(
snake &newsnake,
int nVert,
int indVert,
int subVert,
const std::vector<int> &surfInds,
45 const std::vector<int> &edgeInds,
const std::vector<int> &edgeSubs,
46 std::unordered_multimap<int, int> &hashSurfInds);
47 void SpawnAtVertexEdge(
snake &newsnake,
int nEdge,
const std::vector<int> &surfInds,
const std::vector<int> &edgeInds,
48 const std::vector<int> &voluInds,
const std::vector<int> &surfSubs,
49 std::unordered_multimap<int, int> &hashEdgeInds,
50 std::unordered_multimap<int, int> &hashVoluInds);
52 void SpawnAtVertexSurf3D(
snake &newsnake,
int nSurf,
const std::vector<int> &surfInds,
const std::vector<int> &voluInds,
53 const std::vector<int> &voluSubs, std::unordered_multimap<int, int> &hashSurfInds);
54 void SpawnAtVertexSurf2D(
snake &newsnake,
int nEdge,
const std::vector<int> &voluInds);
55 void SpawnAtVertexVolu(
snake &newsnake,
int nSurf);
56 void MergeAllContactVertices(
snake &fullsnake, std::vector<int> &isImpact);
58 void SpawnArrivedSnaxels(
snake &fullsnake,
const std::vector<int> &isImpact);
59 void SpawnArrivedSnaxelsDir(
snake &fullsnake,
snake &partSnake,
const std::vector<int> &isImpact,
int dir,
63 void MergeCleanSnake(
snake &fullsnake, std::vector<int> &isImpact);
64 void CleanupSnakeConnec(
snake &snakein);
65 void IdentifyMergEdgeSameSurfConnec(
const snake &snakein, std::vector<ConnecRemv> &connecEdit);
66 void IndentifyEdgeSameSurf(
const snake &snakein,
int currSub,
int &stepCheck, std::vector<int> &tempSub,
69 void IdentifyMergEdgeConnec(
const snake &snakein, std::vector<ConnecRemv> &connecEdit);
70 void IdentifyMergeEdgeGeneral(
const snake &snakein, std::vector<bool> &isObjDone, std::vector<ConnecRemv> &connecEdit,
72 std::vector<int> &tempSub2, std::vector<int> &tempCount,
74 void IdentifyMergeEdgeGeneralChain(
const snake &snakein, std::vector<bool> &isObjDone,
76 std::vector<int> &tempSub, std::vector<int> &tempSub2, std::vector<int> &tempCount,
79 void IdentifyMergSurfConnec(
const snake &snakein, std::vector<ConnecRemv> &connecEdit);
80 void IdentifyMergeSurfGeneral(
const snake &snakein, std::vector<bool> &isObjDone, std::vector<ConnecRemv> &connecEdit,
81 ConnecRemv &tempConnec, std::vector<int> &tempSub, std::vector<int> &tempSub2,
84 void IdentifyMergeSurfRecursive(
const snake &snakein, std::vector<bool> &isObjDone, std::vector<int> &tempCount,
86 ConnecRemv &tempConnec,
const std::vector<int> &tempSub,
87 const std::vector<int> &tempSub2,
int excludeSub);
88 void ModifyMergVoluConnec(
snake &snakein, std::vector<ConnecRemv> &connecEdit,
const std::vector<int> &indRmvVert);
90 void ModifyMergSurf2DConnec(
snake &snakein, std::vector<ConnecRemv> &connecEdit);
91 void SnaxEdgeConnecDetection(
snake &snakein, std::vector<ConnecRemv> &connecEdit);
92 void SnaxNoConnecDetection(
const mesh &snakeconn, std::vector<ConnecRemv> &connecEdit);
93 void dispconnrmv(std::vector<ConnecRemv> conn);
95 void CheckSnakeRemovalsVert(
const snake &snakein,
const std::vector<int> &indRmvVert);
96 void CheckSnakeRemovalsEdge(
const snake &snakein,
const std::vector<int> &indRmvEdge);
97 void CheckSnakeRemovalsSurf(
const snake &snakein,
const std::vector<int> &indRmvSurf);
98 void CheckSnakeRemovalsVolu(
const snake &snakein,
const std::vector<int> &indRmvVolu);
Provide std::vector container with hashed index mapping.
Class containing the information needed to trim objects from a mesh.
Provide tecplot file formating for mesh and snake outputs.
Provides the core restricted surface snake container.