[
https://issues.apache.org/jira/browse/GEOMETRY-11?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matt Juntunen resolved GEOMETRY-11.
-----------------------------------
Resolution: Done
> Replace tolerance with GeometryContext
> --------------------------------------
>
> Key: GEOMETRY-11
> URL: https://issues.apache.org/jira/browse/GEOMETRY-11
> Project: Apache Commons Geometry
> Issue Type: Wish
> Reporter: Matt Juntunen
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> All of the partitioning-related concrete classes (ex: Plane, PolygonsSet,
> PolyhedronsSet, etc) use a double value named tolerance in order to address
> issues with floating point accuracy. For example, when determining if a point
> lies in a plane, the point does not need to lie exactly on the plane but just
> be within +- tolerance distance from it. Code testing values against each
> other using this toleranceĀ isĀ repeated throughout the code base (ex: x >= y -
> tolerance). We should abstract the concept of the tolerance into a
> GeometryContext class and provide methods for testing values against each
> other using the tolerance. This will reduce the chance of bugs and will also
> allow for more sophisticated handling of floating point accuracy later on.
> The GeometryContext class would be similar to the MathContext class used by
> BigDecimal but would contain the logic for making comparisons in addition to
> the configuration for the comparisons.
> {code:java}
> public class GeometryContext {
> public GeometryContext(tolerance){...}
> public double getTolerance(){ ... }
> // return -1, 0, +1
> public int compare(double a, double b) { ... }
> }{code}
> Pull request: https://github.com/apache/commons-geometry/pull/22
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)