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

Matt Juntunen commented on GEOMETRY-32:
---------------------------------------

I must not be getting emails from JIRA. I just now saw that you commented here.
{quote}Why?
{quote}
Because otherwise points that were previously inside the region would now be 
outside. For example, consider the region consisting of the first quadrant in 
2D. It is bounded by the line segment going from +infinity to zero on the y 
axis and the line segment 0 to +infinity on the x axis. If we transform this by 
negating each x component (reflecting along the y axis), then the y axis 
segment remains the same but the x axis segment now goes from 0 to -infinity, 
meaning it has reversed direction. We would expect the inside of the reflected 
region to be simply the second quadrant, but since the orientation of the 
bounding lines is significant, the inside of the region is now actually all 
quadrants except for the second. (The inside of the region is determined to lie 
on the left side of the bounding line when looking along its direction.) We 
therefore, need to swap the interior and exterior of the region in order to get 
the expected result. This holds true for all dimensions greater than 1 where 
the transform does not preserve spatial orientation.

> BSPTree Updates
> ---------------
>
>                 Key: GEOMETRY-32
>                 URL: https://issues.apache.org/jira/browse/GEOMETRY-32
>             Project: Apache Commons Geometry
>          Issue Type: Improvement
>          Components: core
>            Reporter: Matt Juntunen
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> The following updates should be made to the BSPTree class:
> - add an {{isLeaf()}} method to replace all of the {{node.getCut() == null}} 
> expressions
> - add unit tests
> _Edit [2019-02-17]:_
> Additional goals:
> - Refactor the API to split the idea of a general BSPTree and a BSPTree used 
> for defining in/out regions. This could result in a BSPTree interface and a 
> RegionBSPTree interface. The goal here is to allow end-users to create their 
> own extensions of these classes and specialize them for their own 
> applications (for example, to implement spatial sorting or other algorithms). 
> This will be one of the only planned extension points in the library.
> - Make the API easier to use and extend and reduce the necessity of casting 
> (especially unchecked casting) as much as possible.
> - Add the idea of convex subhyperplanes to allow for more efficient tree 
> construction.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to