[ 
https://issues.apache.org/jira/browse/GEOMETRY-71?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17010203#comment-17010203
 ] 

Baljit Singh commented on GEOMETRY-71:
--------------------------------------

I tried the solution provided 
[here|https://stackoverflow.com/questions/19897187/locating-the-centroid-center-of-mass-of-spherical-polygons].
 I wrote the following and it works for both windings:

{code:java}
    private Point2S getBarycenter(List<Point2S> list) {
        Vector3D sumVector = Vector3D.ZERO;

        for (int i = 0; i < list.size(); i++) {
            final Vector3D first = list.get(i).getVector();
            final Vector3D second = list.get((i + 1) % list.size()).getVector();

            sumVector = sumVector.add(first.angle(second), 
first.cross(second).normalize());
        }

        return Point2S.from(sumVector);
    }
{code}

So, it seems the algorithm is correct. There is must be a bug somewhere in 
calculations. Not totally sure how the above code translates in to ConvexArea2S 
etc.

> Investigate Spherical Barycenter Accuracy
> -----------------------------------------
>
>                 Key: GEOMETRY-71
>                 URL: https://issues.apache.org/jira/browse/GEOMETRY-71
>             Project: Apache Commons Geometry
>          Issue Type: Bug
>            Reporter: Matt Juntunen
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The current code for computing spherical barycenters in 
> {{ConvexArea2S.getBarycenter()}} seems to suffer from floating point accuracy 
> issues. The {{ConvexArea2STest.checkBarycenterConsistency()}} method checks 
> the consistency of the barycenter computation of a region by splitting the 
> region into two sections, computing the area and barycenter of each section, 
> and then computing the combined barycenter of the sections by adding the 
> barycenter of each scaled by its corresponding area. It is expected that the 
> combined barycenter computed in this way should equal the barycenter computed 
> for the region as a whole. However, in practice, a large epsilon value is 
> needed in the comparison in order for the tests to pass. We need to 
> investigate why this is the case.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to