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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP Program to check if three straight 
// line are concurrent or not
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program to check if three straight 
// line are concurrent or not
  
// Return true if three line are 
// concurrent, else false.
function 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);
}   
  
    // Driver Code
    $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))
        echo "Yes";
    else
        echo "No";
  
// This code is contributed by anuj_67.
?>

chevron_right


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.