Quick Symbolic Proof of Pascal Line

This is a short demo with short code. Use the following utility function to find intersection of lines. The diagram shows the convention of the choice of vertices.

segmentIntersection[p1_List, p2_List, p3_List, p4_List] := 
 Block[{u, v}, Module[{sol}, 
   sol = Solve[u*(p2 - p1) + p1 == v*(p4 - p3) + p3, {u, v}];
   {u, v, u*(p2 - p1) + p1} /. sol[[1]]]]

Define a function of points on conic (or hyperbola)

pt[t_] := {m*Cos[t], n*Sin[t]}
(* pt2[t_] = {m*Sec[t], n*Tan[t]} *)

Let’s use the sketch from wikipedia and name the points in the same way:


pascal.png

g = segmentIntersection[pt[a], pt[f], pt[c], pt[d]][[3]];
h = segmentIntersection[pt[a], pt[b], pt[d], pt[e]][[3]];
k = segmentIntersection[pt[b], pt[c], pt[e], pt[f]][[3]];

Check if GHK are collinear by the following code and syntax sugar of Cross. The idea is GHK is collinear if and only if the normal vector V of GH is perpendicular to HK ( V \cdot HK = 0 )

AbsoluteTiming[Framed[Cross[g - h].(h - k) // Simplify]]
(*{ 0.93, 0 }*)

The code above returns 0 in less than 1 sec. Hence it completes the proof. If you use pt2[t] for hyperbola, the result is the same.


###Remark###

This algebraic method is very generic (except the case with parallel opposite sides) and covers all 60 cases of hexagon given 6 fixed points (generated by (6-1)!/2 = 60, which is all circular permutation of the indices and halved by reflection symmetry
e.g. 1-2-3-4-5-6 = 2-3-4-5-6-1 = 1-6-5-4-3-2)

2 Likes