commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Zimmerman (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (MATH-1211) PolyhedronsSet.firstIntersection(Vector3D point, Line line) sometimes reports intersections on wrong end of line
Date Wed, 08 Apr 2015 15:47:12 GMT

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

Mike Zimmerman updated MATH-1211:
---------------------------------
    Attachment: IntersectionTest.java

I'm using commons-math-3.4.  The attached code generates a triangulated cube and runs some
interior checks and ray intersection tests.  I think the intersection test should always return
a face in "front" of the ray but sometimes the PolyhedronsSet.findIntersection method is picking
up faces "behind" the ray direction.

> PolyhedronsSet.firstIntersection(Vector3D point, Line line) sometimes reports intersections
on wrong end of line
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: MATH-1211
>                 URL: https://issues.apache.org/jira/browse/MATH-1211
>             Project: Commons Math
>          Issue Type: Bug
>            Reporter: Mike Zimmerman
>         Attachments: IntersectionTest.java
>
>
> I constructed a PolyhedronsSet from a list of triangular faces representing an icosphere
(using the instructions found at https://mail-archives.apache.org/mod_mbox/commons-user/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 sphere-shaped mesh
on the wrong semi-infinite 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)

Mime
View raw message