Check if three straight lines are concurrent or not

Given three lines equation,
a1x + b1y + c1 = 0
a2x + b2y + c2 = 0
a3x + b3y + c3 = 0

The task is to check whether the given three lines are concurrent or not. Three straight lines are said to be concurrent if they pass through a point i.e., they meet at a point.

Examples:

```Input : a1 = 2, b1 = -3, c1 = 5
a2 = 3, b2 = 4, c2 = -7
a3 = 9, b3 = -5, c3 = 8
Output : Yes

Input : a1 = 2, b1 = -3, c1 = 5
a2 = 3, b2 = 4, c2 = -7
a3 = 9, b3 = -5, c3 = 4
Output : No
```

Let
a1x + b1y + c1 = 0 ………. (1)
a2x + b2y + c2 = 0 ………. (2)
a3x + b3y + c3 = 0 ………. (3)

Suppose the eqn (i) and (ii) intersets at (x1, y1). Then (x1, y1) will satisfy bothe equations.
Therefore, solving (i) and (ii) using method of cross-multiplication, we get,
(x1/b1c2 – b2c1) = (y1/c1a2 – c2a1) = (1/a1b2 – a2b1)

Therefore,
x1 = (b1c2 – b2c1/a1b2 – a2b1) and
y1 = (c1a2 – c2a1/a1b2 – a2b1), a1b2 – a2b1 != 0

Therefore, the required coodinates of the point of intersection of the lines (i) and (ii) are
(b1c2 – b2c1/a1b2 – a2b1, c1a2 – c2a1/a1b2 – a2b1)

For, three of line to be concurrent, (x1, y1) must satisfy the equation (iii) as well.
So,
a3x + b3y + c3 = 0
=> a3(b1c2 – b2c1/a1b2 – a2b1) + b3(c1a2 – c2a1/a1b2 – a2b1) + c3 = 0
=> a3(b1c2 – b2c1) + b3(c1a2 – c2a1) + c3(a1b2 – a2b1) = 0

So, we only need to check if above condition satisfy or not.

Below is the implemenatation of this approach:

C++

 `// CPP Program to check if three straight  ` `// line are concurrent or not ` `#include ` `using` `namespace` `std; ` ` `  `// Return true if three line are concurrent, ` `// else false. ` `bool` `checkConcurrent(``int` `a1, ``int` `b1, ``int` `c1,  ` `                      ``int` `a2, ``int` `b2, ``int` `c2,  ` `                      ``int` `a3, ``int` `b3, ``int` `c3) ` `{ ` `    ``return` `(a3 * (b1 * c2 - b2 * c1) +  ` `            ``b3 * (c1 * a2 - c2 * a1) +   ` `            ``c3 * (a1 * b2 - a2 * b1) == 0); ` `} ` ` `  `// Driven Program ` `int` `main() ` `{ ` `    ``int` `a1 = 2, b1 = -3, c1 = 5; ` `    ``int` `a2 = 3, b2 = 4, c2 = -7; ` `    ``int` `a3 = 9, b3 = -5, c3 = 8; ` ` `  `    ``(checkConcurrent(a1, b1, c1, a2, b2, c2,  ` `     ``a3, b3, c3) ? (cout << ``"Yes"``) : (cout << ``"No"``)); ` `    ``return` `0; ` `} `

Java

 `// Java Program to check if three straight  ` `// line are concurrent or no ` `import` `java.io.*; ` ` `  `class` `GFG { ` ` `  `    ``// Return true if three line are concurrent, ` `    ``// else false. ` `    ``static` `boolean` `checkConcurrent(``int` `a1, ``int` `b1, ` `                   ``int` `c1, ``int` `a2, ``int` `b2, ``int` `c2,  ` `                           ``int` `a3, ``int` `b3, ``int` `c3) ` `    ``{ ` `        ``return` `(a3 * (b1 * c2 - b2 * c1) +  ` `                ``b3 * (c1 * a2 - c2 * a1) +  ` `                ``c3 * (a1 * b2 - a2 * b1) == ``0``); ` `    ``} ` `     `  `    ``// Driven Program ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{ ` `        ``int` `a1 = ``2``, b1 = -``3``, c1 = ``5``; ` `        ``int` `a2 = ``3``, b2 = ``4``, c2 = -``7``; ` `        ``int` `a3 = ``9``, b3 = -``5``, c3 = ``8``; ` `     `  `        ``if``(checkConcurrent(a1, b1, c1, a2, b2, ` `                               ``c2, a3, b3, c3))  ` `            ``System.out.println( ``"Yes"``); ` `        ``else` `            ``System.out.println( ``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by anuj_67. `

Python 3

 `# Python3 Program to check if three straight  ` `# line are concurrent or not ` ` `  `# Return true if three line are concurrent, ` `# else false. ` `def` `checkConcurrent(a1, b1, c1, a2, b2, c2, ` `                                 ``a3, b3, c3): ` ` `  `    ``return` `(a3 ``*` `(b1 ``*` `c2 ``-` `b2 ``*` `c1) ``+` `            ``b3 ``*` `(c1 ``*` `a2 ``-` `c2 ``*` `a1) ``+` `            ``c3 ``*` `(a1 ``*` `b2 ``-` `a2 ``*` `b1) ``=``=` `0``) ` ` `  ` `  `# Driven Program ` `a1 ``=` `2` `b1 ``=` `-``3` `c1 ``=` `5` `a2 ``=` `3` `b2 ``=` `4` `c2 ``=` `-``7` `a3 ``=` `9` `b3 ``=` `-``5` `c3 ``=` `8` ` `  `if``(checkConcurrent(a1, b1, c1, a2, b2, c2, ` `                               ``a3, b3, c3)): ` `    ``print``(``"Yes"``) ` `else``: ` `    ``print``(``"No"``) ` ` `  `# This code is contributed by Smitha `

C#

 `// C# Program to check if three straight  ` `// line are concurrent or no ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``// Return true if three line are concurrent, ` `    ``// else false. ` `    ``static` `bool` `checkConcurrent(``int` `a1, ``int` `b1, ` `                ``int` `c1, ``int` `a2, ``int` `b2, ``int` `c2,  ` `                        ``int` `a3, ``int` `b3, ``int` `c3) ` `    ``{ ` `        ``return` `(a3 * (b1 * c2 - b2 * c1) +  ` `                ``b3 * (c1 * a2 - c2 * a1) +  ` `                ``c3 * (a1 * b2 - a2 * b1) == 0); ` `    ``} ` `     `  `    ``// Driven Program ` `    ``public` `static` `void` `Main ()  ` `    ``{ ` `        ``int` `a1 = 2, b1 = -3, c1 = 5; ` `        ``int` `a2 = 3, b2 = 4, c2 = -7; ` `        ``int` `a3 = 9, b3 = -5, c3 = 8; ` `     `  `        ``if``(checkConcurrent(a1, b1, c1, a2, b2, ` `                            ``c2, a3, b3, c3))  ` `            ``Console.WriteLine( ``"Yes"``); ` `        ``else` `            ``Console.WriteLine( ``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by anuj_67. `

PHP

 ` `

Output:

```Yes
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.