public ConvexHull3D build()

in commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/hull/ConvexHull3D.java [268:298]


        public ConvexHull3D build() {
            if (simplex == null) {
                return new ConvexHull3D(candidates, true);
            }

            // The simplex is degenerate.
            if (simplex.isDegenerate()) {
                return new ConvexHull3D(candidates, true);
            }


            simplex.getFacets().forEach(this::addFacet);
            distributePoints(simplex.getFacets());
            Facet conflictFacet = getConflictFacet();
            while (conflictFacet != null) {
                Vector3D conflictPoint = conflictFacet.getOutsidePoint();
                Set<Facet> visibleFacets = new HashSet<>();
                visibleFacets.add(conflictFacet);
                Set<Edge> horizon = new HashSet<>();
                getVisibleFacets(conflictFacet, conflictPoint, visibleFacets, horizon);
                Vector3D referencePoint = conflictFacet.getPolygon().getCentroid();
                Set<Facet> cone = constructCone(conflictPoint, horizon, referencePoint);
                removeFacets(visibleFacets);
                cone.forEach(this::addFacet);
                distributePoints(cone);
                conflictFacet = getConflictFacet();
            }
            Collection<ConvexPolygon3D> hull = edgeMap.values().stream()
                    .map(Facet::getPolygon).collect(Collectors.toSet());
            return new ConvexHull3D(hull);
        }