You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Luc Maisonobe (JIRA)" <ji...@apache.org> on 2014/11/05 20:51:33 UTC

[jira] [Commented] (MATH-1162) contains(Region region) method of AbstractRegion throws NullPointerException exception

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

Luc Maisonobe commented on MATH-1162:
-------------------------------------

I confirm the bug.
A first analysis shows that the problems is due to BSPTree.chopOffPlus(hyperplane), which may replace the cut hyperplane with null despite preserving two sub-trees. We end up with a node that should be a leaf node but has children. I guess the same problem could occur in the similar chopOffMinus(hyperplane) method too.

I'm looking at it.

Reducing hyperplane thickness allow the test to pass, but I would not really recommend it, as too small thickness may create numerical problems elsewhere.

> contains(Region<S> region) method of AbstractRegion throws NullPointerException exception 
> ------------------------------------------------------------------------------------------
>
>                 Key: MATH-1162
>                 URL: https://issues.apache.org/jira/browse/MATH-1162
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.3
>         Environment: tested on windows 8 and heroku
>            Reporter: gün alppay
>
> the contains call on org.apache.commons.math3.geometry.partitioning.AbstractRegion throws an exception in the sample below:
> {noformat}
> import org.apache.commons.math3.geometry.partitioning.Region;
> import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
> import org.apache.commons.math3.geometry.euclidean.twod.Euclidean2D;
> import org.apache.commons.math3.geometry.euclidean.twod.PolygonsSet;
> class Test {
>     public static void main(String[] args) {
> 	Region<Euclidean2D> p = new PolygonsSet( 1.0e-10, new Vector2D(4.267199999996532, -11.928637756014894),
> 	                                                  new Vector2D(4.267200000026445, -14.12360595809307), 
> 	                                                  new Vector2D(9.144000000273694, -14.12360595809307), 
> 	                                                  new Vector2D(9.144000000233383, -11.928637756020067));
> 	Region<Euclidean2D> w = new PolygonsSet( 1.0e-10,  new Vector2D(2.56735636510452512E-9, -11.933116461089332),
> 	                                                   new Vector2D(2.56735636510452512E-9, -12.393225665247766), 
> 	                                                   new Vector2D(2.56735636510452512E-9, -27.785625665247778), 
> 	                                                   new Vector2D(4.267200000030211, -27.785625665247778), 
> 	                                                   new Vector2D(4.267200000030211, -11.933116461089332));
> 	p.contains(w);
>     }
> }
> {noformat}
> the exception thrown is:
> {noformat}
> Exception in thread "main" java.lang.NullPointerException
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:263)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:267)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:267)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:267)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:267)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:267)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:267)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.isEmpty(AbstractRegion.java:251)
>         at org.apache.commons.math3.geometry.partitioning.AbstractRegion.contains(AbstractRegion.java:295)
>         at Test.main(test.java:19)
> {noformat} 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)