private static Vector3D computeTriangleFanWeightedCentroidVector()

in commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/ConvexArea2S.java [397:437]


    private static Vector3D computeTriangleFanWeightedCentroidVector(final List<GreatArc> arcs) {
        final Iterator<GreatArc> arcIt = arcs.iterator();

        final Point2S p0 = arcIt.next().getStartPoint();
        final Vector3D.Unit v0 = p0.getVector();

        final Vector3D.Sum areaCentroid = Vector3D.Sum.create();

        GreatArc arc;
        Point2S p1;
        Point2S p2;
        Vector3D.Unit v1;
        Vector3D.Unit v2;
        Vector3D.Unit triangleCentroid;
        double triangleCentroidLen;
        while (arcIt.hasNext()) {
            arc = arcIt.next();

            if (!arc.contains(p0)) {
                p1 = arc.getStartPoint();
                p2 = arc.getEndPoint();

                v1 = p1.getVector();
                v2 = p2.getVector();

                triangleCentroid = Vector3D.Sum.create()
                        .add(v0)
                        .add(v1)
                        .add(v2)
                        .get().normalize();
                triangleCentroidLen =
                        computeArcCentroidContribution(v0, v1, triangleCentroid) +
                        computeArcCentroidContribution(v1, v2, triangleCentroid) +
                        computeArcCentroidContribution(v2, v0, triangleCentroid);

                areaCentroid.addScaled(triangleCentroidLen, triangleCentroid);
            }
        }

        return areaCentroid.get();
    }