A segment is an unordered pair of points. A segment may be translated by a P, and the midpoint taken:
segment L1 = segment(P(0,0), P(2,4)); P mid = L1.midpoint(); segment L2(mid, P(-2,3)); // form segment L2 += P(1,0); // translate L2 by (1,0) L1.draw(); L2.draw(); dot(L1*L2); // point of intersection