public static boolean isPointsIntersectiongWithEdge( IVec2 pt1, IVec2 pt2, IVec2 edgePt1, IVec2 edgePt2, IVec2 edgePt3) { IVec2 diff1 = edgePt2.diff(edgePt1); IVec2 diff2 = edgePt3.diff(edgePt2); // edge bent inward; no intersection if (diff1.cross(diff2).z >= 0) return false; // edge bent outward if (isFaceDirectionOnEdgeCorrect(edgePt1, edgePt2, pt1) && isFaceDirectionOnEdgeCorrect(edgePt1, edgePt2, pt2)) return false; if (isFaceDirectionOnEdgeCorrect(edgePt2, edgePt3, pt1) && isFaceDirectionOnEdgeCorrect(edgePt2, edgePt3, pt2)) return false; IVec2 bisector1 = diff1.neg().bisect(diff2); IVec2 bisector2 = pt1.diff(edgePt2).bisect(pt2.diff(edgePt2)); if (bisector1.dot(bisector2) > 0) return true; return false; }