You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Matt Juntunen (JIRA)" <ji...@apache.org> on 2019/02/02 00:10:00 UTC

[jira] [Updated] (GEOMETRY-11) Replace tolerance with GeometryContext

     [ https://issues.apache.org/jira/browse/GEOMETRY-11?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Juntunen updated GEOMETRY-11:
----------------------------------
    Description: 
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

  was:
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}


> 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: 10m
>  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)