commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Huber (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (MATH-988) NPE when calling SubLine.intersection() with non-intersecting lines
Date Sun, 02 Jun 2013 13:09:21 GMT

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

Andreas Huber updated MATH-988:
-------------------------------

    Attachment: SubLineIntersection.patch

This patch fixes both implementations and adds test cases.
                
> NPE when calling SubLine.intersection() with non-intersecting lines
> -------------------------------------------------------------------
>
>                 Key: MATH-988
>                 URL: https://issues.apache.org/jira/browse/MATH-988
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.0, 3.1, 3.2, 3.1.1
>            Reporter: Andreas Huber
>         Attachments: SubLineIntersection.patch
>
>
> When calling SubLine.intersection() with two lines that not intersect, then a NullPointerException
is thrown in Line.toSubSpace(). This bug is in the twod and threed implementations.
> The following patch fixes both implementations and adds the required test cases:
> Index: src/test/java/org/apache/commons/math3/geometry/euclidean/threed/SubLineTest.java
> ===================================================================
> --- src/test/java/org/apache/commons/math3/geometry/euclidean/threed/SubLineTest.java
(revision 1488671)
> +++ src/test/java/org/apache/commons/math3/geometry/euclidean/threed/SubLineTest.java
(working copy)
> @@ -152,5 +152,13 @@
>          Assert.assertNull(sub1.intersection(sub2, true));
>          Assert.assertNull(sub1.intersection(sub2, false));
>      }
> +    
> +    @Test
> +    public void testIntersectionNotIntersecting() throws MathIllegalArgumentException
{
> +    	SubLine sub1 = new SubLine(new Vector3D(1, 1, 1), new Vector3D(1.5, 1, 1));
> +    	SubLine sub2 = new SubLine(new Vector3D(2, 3, 0), new Vector3D(2, 3, 0.5));
> +    	Assert.assertNull(sub1.intersection(sub2, true));
> +    	Assert.assertNull(sub1.intersection(sub2, false));
> +    }
>  
>  }
> Index: src/test/java/org/apache/commons/math3/geometry/euclidean/twod/SubLineTest.java
> ===================================================================
> --- src/test/java/org/apache/commons/math3/geometry/euclidean/twod/SubLineTest.java	(revision
1488671)
> +++ src/test/java/org/apache/commons/math3/geometry/euclidean/twod/SubLineTest.java	(working
copy)
> @@ -144,4 +144,12 @@
>          Assert.assertNull(sub1.intersection(sub2, false));
>      }
>  
> +    @Test
> +    public void testIntersectionParallel()
> +    {
> +        final SubLine sub1 = new SubLine(new Vector2D(0, 1), new Vector2D(0, 2));
> +        final SubLine sub2 = new SubLine(new Vector2D(66, 3), new Vector2D(66, 4));
> +        Assert.assertNull(sub1.intersection(sub2, true));
> +        Assert.assertNull(sub1.intersection(sub2, false));
> +    }
>  }
> Index: src/main/java/org/apache/commons/math3/geometry/euclidean/threed/SubLine.java
> ===================================================================
> --- src/main/java/org/apache/commons/math3/geometry/euclidean/threed/SubLine.java	(revision
1488671)
> +++ src/main/java/org/apache/commons/math3/geometry/euclidean/threed/SubLine.java	(working
copy)
> @@ -111,6 +111,10 @@
>  
>          // compute the intersection on infinite line
>          Vector3D v1D = line.intersection(subLine.line);
> +        if (v1D == null)
> +        {
> +        	return null;
> +        }
>  
>          // check location of point with respect to first sub-line
>          Location loc1 = remainingRegion.checkPoint(line.toSubSpace(v1D));
> Index: src/main/java/org/apache/commons/math3/geometry/euclidean/twod/SubLine.java
> ===================================================================
> --- src/main/java/org/apache/commons/math3/geometry/euclidean/twod/SubLine.java	(revision
1488671)
> +++ src/main/java/org/apache/commons/math3/geometry/euclidean/twod/SubLine.java	(working
copy)
> @@ -115,6 +115,10 @@
>  
>          // compute the intersection on infinite line
>          Vector2D v2D = line1.intersection(line2);
> +        if (v2D == null)
> +        {
> +        	return null;
> +        }
>  
>          // check location of point with respect to first sub-line
>          Location loc1 = getRemainingRegion().checkPoint(line1.toSubSpace(v2D));

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message