private List buildPolygonSplitVertexList()

in commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractConvexPolygon3D.java [404:436]


    private List<Vector3D> buildPolygonSplitVertexList(final int enterIdx, final Vector3D newEnterPt,
            final int exitIdx, final Vector3D newExitPt, final List<? extends Vector3D> vertices) {

        final int size = vertices.size();

        final boolean hasNewEnterPt = newEnterPt != null;
        final boolean hasNewExitPt = newExitPt != null;

        final int startIdx = (hasNewEnterPt ? enterIdx + 1 : enterIdx) % size;
        final int endIdx = exitIdx % size;

        final boolean hasWrappedIndices = endIdx < startIdx;

        final int resultSize = (hasWrappedIndices ? endIdx + size : endIdx) - startIdx + 1;
        final List<Vector3D> result = new ArrayList<>(resultSize);

        if (hasNewEnterPt) {
            result.add(newEnterPt);
        }

        if (hasWrappedIndices) {
            result.addAll(vertices.subList(startIdx, size));
            result.addAll(vertices.subList(0, endIdx + 1));
        } else {
            result.addAll(vertices.subList(startIdx, endIdx + 1));
        }

        if (hasNewExitPt) {
            result.add(newExitPt);
        }

        return result;
    }