# Performing a geometric construction symbolically

I'm trying to get a formula to build a conic with the construction of William Braikenridge and Colin MacLaurin.

When performing the construction I want to use symbolics, because I want the final result to be the formula for the construction.

So I tried to build two general lines:

A2 = Point[{Subscript[a, x], Subscript[a, y]}];
B2 = Point[{Subscript[b, x], Subscript[b, y]}];
D2 = Point[{Subscript[d, x], Subscript[d, y]}];
E2 = Point[{Subscript[e, x], Subscript[e, y]}];
r = Line[{{A2, D2}}];
s = Line[{{B2, E2}}];


But I can't see how to get access to the equations of the lines, and I need the symbolic expression for their intersection. Of course, I could do it all on the paper, but that would be tedious, because I have to build other lines and get other intersections.

• Ok, i'll try to work just with the determinants, thank you. – krionz Mar 19 '17 at 19:07
• RegionIntersection[r, s]? It's not clear how far this can be pushed, though... – Michael E2 Mar 19 '17 at 19:22
• I think Mathematica does not have symbolic geometry as advanced as you are looking for. I am not sure if there are packages that can do it. – Szabolcs Mar 19 '17 at 19:54
• Ok, i'll do part of the job with paper and the other with mathematica. – krionz Mar 19 '17 at 20:25
• InterpolatingPolynomial[] ("how to get access to the equations of the lines") and LinearSolve[] ("I need the symbolic expression for their intersection") ought to be useful here. – J. M.'s technical difficulties Mar 20 '17 at 0:03

Format[a[x_]] := Subscript[a, x];
Format[b[x_]] := Subscript[b, x];
Format[d[x_]] := Subscript[d, x];
Format[e[x_]] := Subscript[e, x];

A2 = a /@ {"x", "y"};
B2 = b /@ {"x", "y"};
D2 = d /@ {"x", "y"};
E2 = e /@ {"x", "y"};


The equation for the line passing through the points A2 and D2

r = Simplify[
m*x + b /. Solve[#[] == m*#[] + b & /@ {A2, D2}, {m, b}][]];


Similarly, the equation for the line passing through the points B2 and E2

s = Simplify[
m*x + b /. Solve[#[] == m*#[] + b & /@ {B2, E2}, {m, b}][]];


The intersection point is

ip = {x, r} /. Solve[r == s, x][] // Simplify As expected, you get the same result using s rather than r

ip == {x, s} /. Solve[r == s, x][] // Simplify

(*  True  *)

• Thank you Bob, your code is being really useful. – krionz Mar 19 '17 at 20:26