[ 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)