[ https://issues.apache.org/jira/browse/MATH1211?page=com.atlassian.jira.plugin.system.issuetabpanels:commenttabpanel&focusedCommentId=14488715#comment14488715
]
Mike Zimmerman commented on MATH1211:

Hi Luc,
Sorry if my initial explanation was a bit convoluted. :)
But thanks so much for applying the fix, and glad I could help.
 Mike
> PolyhedronsSet.firstIntersection(Vector3D point, Line line) sometimes reports intersections
on wrong end of line
> 
>
> Key: MATH1211
> URL: https://issues.apache.org/jira/browse/MATH1211
> Project: Commons Math
> Issue Type: Bug
> Reporter: Mike Zimmerman
> Fix For: 3.5
>
> Attachments: IntersectionTest.java
>
>
> I constructed a PolyhedronsSet from a list of triangular faces representing an icosphere
(using the instructions found at https://mailarchives.apache.org/mod_mbox/commonsuser/201208.mbox/<5039FE35.2090307@free.fr>).
This seems to produce correct INSIDE/OUTSIDE results for randomly chosen points. I think
my mesh triangles are defined appropriately.
> However, using PolyhedronsSet.firstIntersection(Vector3D point, Line line) to shoot randomly
oriented rays from the origin sometimes gives a wrong mesh intersection point "behind" the
origin. The intersection algorithm is sometimes picking up faces of the sphereshaped mesh
on the wrong semiinfinite portion of the line, i.e. meshIntersectionPoint.subtract(point).dotProduct(line.getDirection())<0
where point is the Vector3D at center of the sphere and line extends outward through the mesh.
> I think the dot product above should always be positive. If multiple intersections exist
along a "whole" line then the first one in "front" of the line's origin should be returned.
This makes ray tracing with a PolyhedronsSet possible.

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