in commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Planes.java [316:344]
public static List<ConvexPolygon3D> indexedConvexPolygons(final List<? extends Vector3D> vertices,
final int[][] faceIndices, final Precision.DoubleEquivalence precision) {
final int numFaces = faceIndices.length;
final List<ConvexPolygon3D> polygons = new ArrayList<>(numFaces);
final List<Vector3D> faceVertices = new ArrayList<>();
int[] face;
for (int i = 0; i < numFaces; ++i) {
face = faceIndices[i];
if (face.length < EuclideanUtils.TRIANGLE_VERTEX_COUNT) {
throw new IllegalArgumentException(MessageFormat.format(
"Invalid number of vertex indices for face at index {0}: required at least {1} but found {2}",
i, EuclideanUtils.TRIANGLE_VERTEX_COUNT, face.length));
}
for (final int vertexIndex : face) {
faceVertices.add(vertices.get(vertexIndex));
}
polygons.add(convexPolygonFromVertices(
faceVertices,
precision
));
faceVertices.clear();
}
return polygons;
}