77 this->initalSortedInSpaceWithCoords(triangles, size);
81 this->fillSortedInSpaceWithFirstVertexAndCoordinateIDs(numberOfRows);
85 for (
int i = 0;
i < numberOfRows;
i++) {
97 this->fillVectorWithIndicesOfTriangleNeighbors();
101void TriangleNeighborFinder::initalSortedInSpaceWithCoords(
Triangle *triangles,
int size)
107 for (
int i = 0;
i < size;
i++){
139 for (
int i = 0;
i < numberOfRows;
i++){
147void TriangleNeighborFinder::fillSortedInSpaceWithFirstVertexAndCoordinateIDs(
int numberOfRows)
149 int firstVertexID = 0;
151 int coordinateID = 0;
154 while (firstVertexID < numberOfRows) {
174void TriangleNeighborFinder::fillVectorWithIndicesOfTriangleNeighbors()
186 unsigned int jTriangle = findTriangleID(uniqueCoordID);
205unsigned int TriangleNeighborFinder::findTriangleID(
unsigned int uniqueCoordID)
210Vertex TriangleNeighborFinder::getCoordinatesIDfromTriangle(
int triangleID)
219bool TriangleNeighborFinder::isTriangleNeighborOfParentTriangle(Vertex v1, Vertex v2)
224 else if (v1.x == v2.y)
226 else if (v1.x == v2.z)
231 else if (v1.y == v2.y)
233 else if (v1.y == v2.z)
238 else if (v1.z == v2.y)
240 else if (v1.z == v2.z)
249bool TriangleNeighborFinder::isNeighborNotAlreadyInside(
unsigned int iTriangle,
unsigned int jTriangle)
261 int row =
i * neighborIndices->
DIM;
262 neighborIndices->
ptr[
row + 0] = neighborIndices->
ptr[
row + 1] = neighborIndices->
ptr[
row + 2] = -1;
275 geom->triangles[
i].alphaAngles[0] =
geom->triangles[
i].alphaAngles[1] =
geom->triangles[
i].alphaAngles[2] = 90.0f;
307 if (uniqueCoordID == numberOfRows)
316 std::vector< std::vector<Triangle> >
connected;
317 int uniqueCoordID = 0;
318 while (uniqueCoordID < numberOfRows)
320 std::vector<Triangle> triangles;
328 triangles.push_back(this->triangles[
triangleID]);
331 if (uniqueCoordID >= numberOfRows)
344 printf(
"VertexID | FirstVertexID | CoordID | UniqueCoordID\n");
345 for (
int row = 0;
row < numberOfRows;
row++) {
352 printf(
"VertexID | X | Y | Z | FirstVertexID | CoordID | UniqueCoordID\n");
353 for (
int row = 0;
row < numberOfRows;
row++) {
void printSortedToTriangles() const
std::vector< std::vector< uint > > indicesOfTriangleNeighbors
real ** sortedToTriangles
TriangleNeighborFinder(Triangle *triangles, int size)
~TriangleNeighborFinder()
void fillWithNeighborAngles(TriangularMesh *geom) const
std::vector< int > getTriangleIDsWithCommonVertex(int vertexID) const
void printSortedInSpace() const
std::vector< std::vector< Triangle > > getTrianglesPerVertex() const
void fillWithNeighborIndices(IntegerPtr2D *indices, Triangle *triangles)
std::shared_ptr< T > SPtr
int compare2DArrayAccordingToIndex(const void *pa, const void *pb)
int compare2DArrayAccordingToXYZ(const void *pa, const void *pb)
int getCommonEdge(const Triangle &t2) const
real getEuclideanDistanceTo(const Vertex &w) const