public bool Collides(EdgeEntity edge) => Difference(edge) >= 0;
private double Difference(EdgeEntity edge) => Math.Min(end, edge.end) - Math.Max(start, edge.start);
public double Overlap(EdgeEntity edge) => Math.Max(0, Difference(edge));
public bool Collides(EdgeEntity edge) => Difference(edge) >= 0;
private double Difference(EdgeEntity edge) => Math.Min(end, edge.end) - Math.Max(start, edge.start);
public double Overlap(EdgeEntity edge) => Math.Max(0, Difference(edge));