Polygon.IntersectTriangle C# (CSharp) Method

IntersectTriangle() public method

public IntersectTriangle ( Triangle, triangle ) : List
triangle Triangle,
return List
    public List<HitInfo> IntersectTriangle(Triangle triangle)
    {
        List<HitInfo> res = new List<HitInfo>();
        for (int i=0;i<vertices.Count;i++){
            LineSegment2D l1 = new LineSegment2D(V2(vertices[i]), V2(vertices[(i+1)%vertices.Count]));

            for (int j=0;j<3;j++){
                LineSegment2D l2 = new LineSegment2D(V2(triangle.Vertex(j)), V2(triangle.Vertex((j+1)%3)));
                Vector2D point;
                if (l1.LineIntersect(l2, out point)){
                    double distance = (point - V2(vertices[i])).magnitude;
                    double segmentLength = l1.Length();
                //if (l1.DoLinesIntersect(l2)){
                    double normalizedDistance = distance/segmentLength;
                    Vector3D point3D = Vector3D.Lerp (new Vector3D (vertices[i]), new Vector3D (vertices[(i+1)%vertices.Count]), normalizedDistance);
                    res.Add(new HitInfo(i,j,point3D.ToVector3()));
                }
                /*Vector2 intersectionPoint;
                if (LineLineIntersection(from,to, tFrom, tTo,out intersectionPoint)){
                    float normalizedDistance = Vector3.Dot(to-from, tTo-tFrom);
                    Vector3 point3D = Vector3.Lerp (vertices[i], vertices[(i+1)%vertices.Count], normalizedDistance);
                    res.Add(new HitInfo(i,j,point3D));
                }*/
            }
        }
        return res;
    }