public static int flattenShallowPockets(double depthThreshold, List<Point2D> concaveHullVerticesToFilter)
{
int numberOfVerticesRemoved = 0;
ConcaveHullPocket pocket = new ConcaveHullPocket();
Vector2D shift = new Vector2D();
for (int currentIndex = 0; currentIndex < concaveHullVerticesToFilter.size(); currentIndex++)
{
if (isConvexAtVertex(currentIndex, concaveHullVerticesToFilter))
continue;
boolean success = computeConcaveHullPocket(currentIndex, pocket, concaveHullVerticesToFilter);
if (!success)
continue;
double maxDepth = pocket.getMaxDepth();
if (maxDepth > depthThreshold)
continue;
Point2D startBridgeVertex = new Point2D(pocket.getStartBridgeVertex());
Point2D endBridgeVertex = new Point2D(pocket.getEndBridgeVertex());
shift.sub(endBridgeVertex, startBridgeVertex);
shift.normalize();
shift.set(shift.getY(), -shift.getX());
shift.scale(maxDepth);
startBridgeVertex.add(shift);
endBridgeVertex.add(shift);
int startBridgeVertexIndex = pocket.getStartBridgeIndex();
int endBridgeVertexIndex = pocket.getEndBridgeIndex();
numberOfVerticesRemoved += removeAllExclusive(startBridgeVertexIndex, endBridgeVertexIndex, concaveHullVerticesToFilter);
}
return numberOfVerticesRemoved;
}