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

Martin Desruisseaux closed SIS-172.
-----------------------------------
    Resolution: Won't Fix

Storing the inclusion/exclusion state for each border separately is not very 
practical when the envelope is the result of a map projection. Instead, we 
document {{intersects(Envelope, boolean)}} in terms of more classical 
{{intersects}} and {{touches}} operation.

We have to change the behavior of {{intersects(Envelope)}} for making it 
conform to the usual definition of {{intersects}}, i.e. does not include the 
cases where the envelopes only touch each-other.

> Replace boolean argument in AbstractEnvelope.contains and intersects
> --------------------------------------------------------------------
>
>                 Key: SIS-172
>                 URL: https://issues.apache.org/jira/browse/SIS-172
>             Project: Spatial Information Systems
>          Issue Type: Task
>          Components: Referencing
>    Affects Versions: 0.3, 0.4, 0.5, 0.6, 0.7
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>            Priority: Minor
>             Fix For: 0.8
>
>
> The {{AbstractEnvelope}} class provides the following methods:
> * {{boolean contains(Envelope envelope, boolean edgesInclusive)}}
> * {{boolean intersects(Envelope envelope, boolean edgesInclusive)}}
> We may replace the {{boolean}} argument by something more generic.
> h3. First alternative: enumeration
> We could replace the {{boolean}} argument by something like the following 
> enumeration:
> {code:java}
> public enum EdgeInclusion {
>     /**
>      * All edges are inclusive. This is the default policy for Envelope.
>      */
>     ALL,
>     /**
>      * All edges are exclusive.
>      */
>     NONE,
>     /**
>      * Edges defined by the lower corner are inclusive, while edges defined 
> by the upper corner are exclusive.
>      * This is the usual policy in Java2D.
>      */
>     LOWER,
>     /**
>      * Edges defined by the upper corner are inclusive, while edges defined 
> by the lower corner are exclusive.
>      * This policy is defined for completeness but rarely used.
>      */
>     UPPER
> }
> {code}
> The policy used in the majority of cases is the {{ALL}} one. Consequently we 
> should provide convenience methods expecting only an {{Envelope}} argument 
> and using that mode by default.
> h3. Second alternative: {{isLowerInclusive(int)}} and 
> {{isUpperInclusive(int)}} methods.
> We could add a pair of methods telling whether the lower and upper values are 
> inclusive or exclusive for a given dimension. This would be more generic than 
> the above-cited enumeration, and would also be closer to the 
> {{org.apache.sis.measure.Range}} API. The inclusion/exclusion information 
> would be part of the {{Envelope}} state instead than an argument provided to 
> the {{contains}} and {{intersects}} methods. However we would need to revisit 
> also the {{contains(DirectPosition)}} and {{add(Envelope)}} methods.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to