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

Matt Juntunen commented on MATH-1450:
-------------------------------------

The pull request for this is very small. I have more tests around this issue in 
a branch for MATH-1437 but they all use some new test convenience methods I 
made. So, I thought I'd just submit the bare minimum here and then include the 
other tests separately to help with traceability and to avoid overly noisy 
commits.

> PolygonsSet sets incorrect value for last vertex in open loops
> --------------------------------------------------------------
>
>                 Key: MATH-1450
>                 URL: https://issues.apache.org/jira/browse/MATH-1450
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 4.0, 3.5, 3.6
>            Reporter: Matt Juntunen
>            Priority: Major
>             Fix For: 4.0
>
>
> According to the documentation, for open infinite vertex loops returned by 
> the PolygonsSet.getVertices() method, the last two points can be used to 
> determine the direction of the last edge in the loop. However, the current 
> code returns a point from the second-to-last edge. For example, the code 
> below builds a box open on the top. It currently returns the vertex loop 
> [null, \\{0; 1}, \\{0; 0}, \\{1; 0}, \\{1; 0}], where the last two vertices 
> are the same point and cannot be used to determine the direction of the last 
> edge. The returned vertex loop should be [null, \\{0; 1}, \\{0; 0}, \\{1; 0}, 
> \\{1; 1}].
> {code:java}
>         Cartesian2D v0 = new Cartesian2D(0, 1);
>         Cartesian2D v1 = new Cartesian2D(0, 0);
>         Cartesian2D v2 = new Cartesian2D(1, 0);
>         Cartesian2D v3 = new Cartesian2D(1, 1);
>         Line left = new Line(v0, v1, 1e-10);
>         Line bottom = new Line(v1, v2, 1e-10);
>         Line right = new Line(v2, v3, 1e-10);
>         List<SubHyperplane<Euclidean2D>> boundaries = new ArrayList<>();
>         boundaries.add(new SubLine(left, new 
> IntervalsSet(left.toSubSpace(v0).getX(), left.toSubSpace(v1).getX(), 1e-10)));
>         boundaries.add(new SubLine(bottom, new 
> IntervalsSet(bottom.toSubSpace(v1).getX(), bottom.toSubSpace(v2).getX(), 
> 1e-10)));
>         boundaries.add(new SubLine(right, new 
> IntervalsSet(right.toSubSpace(v2).getX(), right.toSubSpace(v3).getX(), 
> 1e-10)));
>         PolygonsSet polygon = new PolygonsSet(boundaries, 1e-10);
>         polygon.getVertices(); // returns [[null, {0; 1}, {0; 0}, {1; 0}, {1; 
> 0}]]
> {code}
>  
> Pull Request: [https://github.com/apache/commons-math/pull/81]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to