/** * Gets the vertices for this triangle. * * @return a new array containing the triangle vertices */ public Vertex[] getVertices() { Vertex[] vert = new Vertex[3]; for (int i = 0; i < 3; i++) { vert[i] = getVertex(i); } return vert; }
/** * Gets the vertices for this triangle. * * @return a new array containing the triangle vertices */ public Vertex[] getVertices() { Vertex[] vert = new Vertex[3]; for (int i = 0; i < 3; i++) { vert[i] = getVertex(i); } return vert; }
private static int numberOfBorderVertices(QuadEdgeTriangle triangle, Set<Vertex> borderVertices) { int numberOfBorderVertices = 0; for (int vertexIndex = 0; vertexIndex < 3; vertexIndex++) { Vertex vertex = triangle.getVertex(vertexIndex); if (borderVertices.contains(vertex)) numberOfBorderVertices++; } return numberOfBorderVertices; }
private static List<ConcaveHullVariables> divideHullAtIntersectionTriangle(ConcaveHullVariables variables, Pair<QuadEdge, QuadEdgeTriangle> entryWithIntersectionTriangle) { Set<QuadEdge> borderEdges = variables.borderEdges; QuadEdgeTriangle intersectionTriangle = entryWithIntersectionTriangle.getRight(); QuadEdge uniqueNonBorderEdge = Arrays.stream(intersectionTriangle.getEdges()).filter(edge -> !isBorderEdge(edge, borderEdges)).findAny().get(); Vertex intersectionVertex = intersectionTriangle.getVertex(indexOfVertexOppositeToEdge(intersectionTriangle.getEdgeIndex(uniqueNonBorderEdge))); return divideHullAtIntersectionVertex(variables, intersectionVertex); }
private static List<ConcaveHullVariables> removeTriangleAndDivideHull(ConcaveHullVariables variables, Pair<QuadEdge, QuadEdgeTriangle> entryToRemove) { QuadEdge edgeToRemove = entryToRemove.getLeft(); QuadEdgeTriangle triangleToRemove = entryToRemove.getRight(); Vertex intersectionVertex = triangleToRemove.getVertex(indexOfVertexOppositeToEdge(triangleToRemove.getEdgeIndex(edgeToRemove))); removeTriangleWithOneBorderEdge(variables, entryToRemove); return divideHullAtIntersectionVertex(variables, intersectionVertex); }
borderVertices.add(borderTriangleToRemove.getVertex(indexBeforeRemovedEdge));
borderVertices.remove(borderTriangleToRemove.getVertex(indexOfVertexOppositeToEdge(newBorderEdgeIndex)));