To www.tweedledum.com/rwg/tan.htm I added code for a Mathematica animation: (* Intersect line segments *) Interseg[{x1_, y1_}, {x2_, y2_}, {x3_, y3_}, {x4_, y4_}] := {((x2 - x1)*(x3*y4 - x4*y3) - (x4 - x3)*(x1*y2 - x2*y1)), -((y2 - y1)*(y3*x4 - y4*x3) - (y4 - y3)*(y1*x2 - y2*x1))}/((x2 - x1)*(y4 - y3) - (x4 - x3)*(y2 - y1)) Animate[Block[{pts = {Cos[#], Sin[#]} & /@ {Pi/2, -8*Pi/12 + Sin[u]/2, 3*Pi/10 + Sin[2*u]/3, 5*Pi/5 - Sin[2*u]/3 + Sin[3*u]/4, -Pi/4 + Sin[4*u]/1.5}, p, r}, p = Interseg[pts[[1]], pts[[2]], pts[[4]], pts[[5]]]; r = Interseg[p, Interseg[pts[[2]], pts[[3]], pts[[5]], pts[[1]]], pts[[3]], pts[[4]]]; Graphics[{Line[{pts[[1]], r}], Red, Line[{p, r, pts[[4]]}], Opacity[.5], Polygon[pts], Yellow, Disk[]}]], {u, 0, 2*Pi}] along with a frame image. Also mentioned on that page: Modulo some simplification, one can neatly *compute* the definition of the interseg function as the vanishing of two triangular areas. In Macsyma define(interseg(x1,y1,x2,y2,x3,y3,x4,y4), ([x,y],subst(linsolve([area_polygon([x1,y1],%%,[x2,y2]), area_polygon([x3,y3],%%,[x4,y4])],%%),%%))) The %% symbol just abbreviates [x,y]. Actually, since DEFINE evaluates its 2nd arg, better form is to quote the point pairs, define(interseg(x1,y1,x2,y2,x3,y3,x4,y4), ('[x,y],subst(linsolve([area_polygon('[x1,y1],%%,'[x2,y2]), area_polygon('[x3,y3],%%,'[x4,y4])],%%),%%))) to guard against any of the ten x,y,... symbols having an unintended preexisting value. --rwg