intersectRayTriangleFront

Determine whether the given ray with the origin <code>(originX, originY, originZ)</code> and direction <code>(dirX, dirY, dirZ)</code> intersects the frontface of the triangle consisting of the three vertices <code>(v0X, v0Y, v0Z)</code>, <code>(v1X, v1Y, v1Z)</code> and <code>(v2X, v2Y, v2Z)</code> and return the value of the parameter <i>t</i> in the ray equation <i>p(t) = origin + t * dir</i> of the point of intersection. <p> This is an implementation of the <a href="http://www.graphics.cornell.edu/pubs/1997/MT97.pdf"> Fast, Minimum Storage Ray/Triangle Intersection</a> method. <p> This test implements backface culling, that is, it will return <code>false</code> when the triangle is in clockwise winding order assuming a <i>right-handed</i> coordinate system when seen along the ray's direction, even if the ray intersects the triangle. This is in compliance with how OpenGL handles backface culling with default frontface/backface settings.

@see #testRayTriangleFront(Vector3d, Vector3d, Vector3d, Vector3d, Vector3d, double)

@param originX the x coordinate of the ray's origin @param originY the y coordinate of the ray's origin @param originZ the z coordinate of the ray's origin @param dirX the x coordinate of the ray's direction @param dirY the y coordinate of the ray's direction @param dirZ the z coordinate of the ray's direction @param v0X the x coordinate of the first vertex @param v0Y the y coordinate of the first vertex @param v0Z the z coordinate of the first vertex @param v1X the x coordinate of the second vertex @param v1Y the y coordinate of the second vertex @param v1Z the z coordinate of the second vertex @param v2X the x coordinate of the third vertex @param v2Y the y coordinate of the third vertex @param v2Z the z coordinate of the third vertex @param epsilon a small epsilon when testing rays that are almost parallel to the triangle @return the value of the parameter <i>t</i> in the ray equation <i>p(t) = origin + t * dir</i> of the point of intersection if the ray intersects the frontface of the triangle; <code>-1.0</code> otherwise

  1. double intersectRayTriangleFront(double originX, double originY, double originZ, double dirX, double dirY, double dirZ, double v0X, double v0Y, double v0Z, double v1X, double v1Y, double v1Z, double v2X, double v2Y, double v2Z, double epsilon)
    public static
    double
    intersectRayTriangleFront
    (
    double originX
    ,
    double originY
    ,
    double originZ
    ,
    double dirX
    ,
    double dirY
    ,
    double dirZ
    ,
    double v0X
    ,
    double v0Y
    ,
    double v0Z
    ,
    double v1X
    ,
    double v1Y
    ,
    double v1Z
    ,
    double v2X
    ,
    double v2Y
    ,
    double v2Z
    ,
    double epsilon
    )
  2. double intersectRayTriangleFront(Vector3d origin, Vector3d dir, Vector3d v0, Vector3d v1, Vector3d v2, double epsilon)

Meta