# Another way to write equation of the line passing through two points? [closed]

I am trying to write equation of the line passing through two points pA={1, -3} and pB={-33, -1} in the form x+17 y+50=0. I tried

{pA, pB} = {{1, -3}, {-33, -1}};
u = pB - pA;
m = {x, y};
v = m - pA;
d = Det[{u, v}];
w = {Coefficient[d, x], Coefficient[d, y]};
k = GCD[Coefficient[d, x], Coefficient[d, y]];
If[w[[1]] != 0, n = Sign[w[[1]]] w/k,
If[w[[2]] != 0, n = Sign[w[[2]]] w/k]];


I got

x+17 y+50==0

Is there another way to write it?

• Write or solve? – Kuba Nov 19 '18 at 8:39
• @Kuba Write the equation of the line passing through two points. – minhthien_2016 Nov 19 '18 at 8:43
• Isn't 17 x-y-20==0 already in that form? – Kuba Nov 19 '18 at 8:51
• Yes. My question is "is there another way to write the equation in that form?" – minhthien_2016 Nov 19 '18 at 8:53
• You can multiply sides by a constant but I fail to see how it is a Mathematica question. – Kuba Nov 19 '18 at 8:58

Simplify[y - InterpolatingPolynomial[{pA, pB}, x] == 0]


50 + x + 17 y == 0

Also

Simplify[y - a x - b == 0 /. First@Solve[a # + b == #2 & @@@ {pA, pB}, {a, b}]]


50 + x + 17 y == 0

And

Simplify @ Rationalize[y - Fit[{pA, pB}, {x, 1}, x] == 0]


50 + x + 17 y == 0

You may do as follows. Let us look for the equation in the form ax+by==1, where the parameters a and b are to be found.This will substitute the coordinates of the points pA and pB into this equations, thus, forming two equations with respect to a and b and solves the system:

eq = a*#[[1]] + b*#[[2]] == 1 &;
eq1=eq /@ {{1, -3}, {-33, -1}}

(*   {a - 3 b == 1, -33 a - b == 1}  *)


This will substitute the solution into the linear equation already in coordinates x and y:

eq[{x, y}] /. sol

(* -(x/50) - (17 y)/50 == 1 *)


This will plot the solution:

Show[{
ContourPlot[-(x/50) - (17 y)/50 == 1, {x, -34, 2}, {y, -4, 0}],
Graphics[{Red, PointSize[0.015], Point[#] & /@ {{1, -3}, {-33, -1}}}]
}]


yielding the following plot:

The original points are shown in red.

This is one of several possible ways.

Have fun!

The equation of a planar line going through two points $$P_1(x_1,y_1)$$ and $$P_2(x_2,y_2)$$ (e.g. cf this for reference) is

$$\begin{vmatrix} x & y\\ x_2-x_1 & y_2-y_1 \end{vmatrix} = \begin{vmatrix} x_1 & y_1\\ x_2 & y_2 \end{vmatrix}.$$

So there is the piece of codes below:

Clear[eq, pts]
eq = Simplify[Det[{{x, y}, -Subtract @@ #}] == Det[#]] &;
pts = {{1, -3}, {-33, -1}};
eq[pts]

50 + x + 17 y == 0


Or

eq2 = Simplify[Det[{-1, 1} Differences[Prepend[#, {x, y}]]] == 0] &;

• If pts = {{1, -3}, {-33, 150}} How can I get the form 9 x+2 y-3=0 . Your code ouput 9 x+2 y==3 Allways in the form a x + b y + c==0, a>0, if a=0, then b >0. – minhthien_2016 Nov 19 '18 at 12:18
• @minhthien_2016 Sort of eq[pts] /. a_ == b_ :> a - b == 0, though I think it just a minor issue. – Αλέξανδρος Ζεγγ Nov 19 '18 at 13:04
• Thank you very much. – minhthien_2016 Nov 19 '18 at 13:46
• Another way : Det[{{x - #1[[1]], y - #1[[2]]}, {x - #2[[1]], y - #2[[2]]}}] == 0 & @@ {{1, -3}, {-33, -1}} // Simplify  – Sigis K Nov 20 '18 at 23:16
• @SigisK Yes, it is. – Αλέξανδρος Ζεγγ Nov 21 '18 at 4:12

With RegionMember:

Simplify[RegionMember[InfiniteLine[{{1, -3}, {-33, -1}}], {x, y}],
Element[x | y, Reals]]


50 + x + 17 y == 0

Knowing that the coefficients are components of a vector perpendicular to the difference of the two points, I think the most convenient command to obtain the equation is

perp = Cross[pB - pA];
perp.{x, y} == perp.pA // Simplify


50 + x + 17 y == 0

The last step before Simplify is

-2 x - 34 y == 100


so you can see that the simplification brought all terms to one side, factored out the greatest common divisor and fixed the signs.

To Mathematica the sums "50 + x + 17y" and "x + 17y + 50" are exactly the same expression, but if you want to order linear terms before constants in the displayed form, you may consider using TraditionalForm (with the added benefit of using a "normal" equality sign while remaining copy-and-pastable):

% // TraditionalForm


$$x+17 y+50=0$$

• Ad sign of the x coefficient: I don't know of any trick simpler than multiply the result by –1 if you don't like it. – The Vee Nov 19 '18 at 13:26

Although this might be more a math question, the ingenious answers have taught me a lot about MMA. Thanks to all contributors. I can add an answer based on my high school Analytical Geometry classes. The mnemonic two-point form of the equation of a straight line through A(x1,y1) and B(x2,y2) is

Using the coordinates for pA and pB given in the question:

Simplify@With[{x1 = 1, y1 = -3, x2 = -33, y2 = -1}, (y - y1)/(
y2 - y1) == (x - x1)/(x2 - x1)] // TraditionalForm


gives

However the more 'symmetrical form' of the equation leads to an answer that is mathematically identical, but is not in the required form. Does anybody know how to force MMA to yield the required form?

Simplify@With[{x1 = 1, y1 = -3, x2 = -33, y2 = -1}, (y - y1)/(
x - x1) == (y2 - y1)/(x2 - x1)] // TraditionalForm


gives

• I think, we can write in the form Simplify@With[{x1 = 1, y1 = -3, x2 = -33, y2 = -1}, (y - y1)* (x2 - x1) - (x - x1)*(y2 - y1) == 0] // TraditionalForm – minhthien_2016 Nov 21 '18 at 6:29
• My way is almost write the equations in the form a x + b y + c = 0`. – minhthien_2016 Nov 21 '18 at 6:48