// XXX: this breaks if s = t bool intersects (const line<cood> & ot, cood eps = 0) const { int a = s.clockwise(t, ot.s, eps); int b = s.clockwise(t, ot.t, eps); if (a == 0 && b == 0) { // colinear corner if (!interval<cood>(s.x, t.x).intersects(interval<cood>(ot.s.x, ot.t.x), eps)) return 0; if (!interval<cood>(s.y, t.y).intersects(interval<cood>(ot.s.y, ot.t.y), eps)) return 0; return 1; } if (a == b) return 0; if (ot.s.clockwise(ot.t, s, eps) == ot.s.clockwise(ot.t, t, eps)) return 0; return 1; }