double distanceLS(const line& l, const line& s) { return intersectLS(l, s) ? 0.0 : min(distanceLP(l, s.a), distanceLP(l, s.b)); }
bool intersectSS(const line& s, const line& t) { return intersectLS(s, t) and intersectLS(t, s); }
double distanceLS(const L &l, const L &s) { if (intersectLS(l, s)) return 0; return min(distanceLP(l, s[0]), distanceLP(l, s[1])); }