bool intersects(const LineSegment<type>& l1, const LineSegment<type>& l2) { if(l1.isDegenerate() || l2.isDegenerate()) { return false; } type t = -(dot(l2.getNormal(), l1.getPoint1())+l2.getOffset())/dot(l2.getNormal(), l1.getDirection()); if(t < 0 || t > 1) { return false; } t = -(dot(l1.getNormal(), l2.getPoint1())+l1.getOffset())/dot(l1.getNormal(), l2.getDirection()); if(t < 0 || t > 1) { return false; } return true; }