Program to check if three points are collinear

Given three points, check whether they lie on a straight (collinear) or not

Examples :

Input : (1, 1), (1, 4), (1, 5)
Output : Yes 
The points lie on a straight line

Input : (1, 5), (2, 5), (4, 6)
Output : No 
The points do not lie on a straight line



First approach
Three points lie on the straight line if the area formed by the triangle of these three points is zero. So we will check if the area formed by the triangle is zero or not

Formula for area of triangle is : 
0.5 * [x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)]

The formula is basically half of determinant
value of following.
x1 x2 x3
y1 y2 y3
1   1  1

The above formula is derived from shoelace formula.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to check if three
// points are collinear or not 
// using area of triangle.
#include <bits/stdc++.h>
#include <math.h>
#include <stdlib.h>
  
using namespace std;
// function to check if point 
// collinear or not
void collinear(int x1, int y1, int x2, 
               int y2, int x3, int y3)
{
    // Calculation the area of 
    // triangle. We have skipped 
    // multiplication with 0.5 
    // to avoid floating point 
    // computations 
    int a = x1 * (y2 - y3) + 
            x2 * (y3 - y1) + 
            x3 * (y1 - y2);
  
    if (a == 0)
        cout << "Yes";
    else
        cout << "No";
}
  
// Driver Code
int main()
{
    int x1 = 1, x2 = 1, x3 = 1, 
        y1 = 1, y2 = 4, y3 = 5;
    collinear(x1, y1, x2, y2, x3, y3);
    return 0;
}
  
// This code is contributed
// by Akanksha Rai(Abby_akku)

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to check if three
// points are collinear or not 
// using area of triangle.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
  
// function to check if point 
// collinear or not
void collinear(int x1, int y1, int x2, 
               int y2, int x3, int y3)
{
    // Calculation the area of 
    // triangle. We have skipped 
    // multiplication with 0.5 
    // to avoid floating point 
    // computations 
    int a = x1 * (y2 - y3) + 
            x2 * (y3 - y1) + 
            x3 * (y1 - y2);
  
    if (a == 0)
        printf("Yes");
    else
        printf("No");
}
  
// Driver Code
int main()
{
    int x1 = 1, x2 = 1, x3 = 1, 
        y1 = 1, y2 = 4, y3 = 5;
    collinear(x1, y1, x2, y2, x3, y3);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check if 
// three points are collinear
// or not using area of triangle.
class GFG 
{
      
    // function to check if 
    // point collinear or not
    static void collinear(int x1, int y1, int x2, 
                          int y2, int x3, int y3)
    {
          
        /* Calculation the area of 
        triangle. We have skipped 
        multiplication with 0.5 
        to avoid floating point 
        computations */
        int a = x1 * (y2 - y3) + 
                x2 * (y3 - y1) + 
                x3 * (y1 - y2);
      
        if (a == 0)
            System.out.println("Yes");
        else
            System.out.println("No");
    
          
    // Driver Code
    public static void main(String args[])
    {
        int x1 = 1, x2 = 1, x3 = 1,
            y1 = 1, y2 = 4, y3 = 5;
                              
        collinear(x1, y1, x2, y2, x3, y3); 
  
    }
}
  
// This code is contributed by Sam007.

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to check
# if three points are collinear
# or not using area of triangle.
  
# function to check if 
# point collinear or not
def collinear(x1, y1, x2, y2, x3, y3):
      
    """ Calculation the area of  
        triangle. We have skipped 
        multiplication with 0.5 to
        avoid floating point computations """
    a = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)
  
    if (a == 0):
        print "Yes"
    else:
        print "No"
  
# Driver Code
x1, x2, x3, y1, y2, y3 = 1, 1, 1, 1, 4, 5
collinear(x1, y1, x2, y2, x3, y3)
  
# This code is contributed
# by Sachin Bisht

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to check if 
// three points are collinear
// or not using area of triangle.
using System;
  
class GFG 
{
      
    /* function to check if 
    point collinear or not */
    static void collinear(int x1, int y1, int x2, 
                          int y2, int x3, int y3)
    {
          
        /* Calculation the area of  
        triangle. We have skipped 
        multiplication with 0.5 to 
        avoid floating point computations */
        int a = x1 * (y2 - y3) + 
                x2 * (y3 - y1) + 
                x3 * (y1 - y2);
      
        if (a == 0)
            Console.Write("Yes");
        else
            Console.Write("No");
    
      
    // Driver code
    public static void Main ()
    {
        int x1 = 1, x2 = 1, x3 = 1, 
            y1 = 1, y2 = 4, y3 = 5;
                              
        collinear(x1, y1, x2, y2, x3, y3);
    }
}
  
// This code is contributed by Sam007.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP or not using area of triangle.
  
/* function to check if 
point collinear or not */
function collinear($x1, $y1, $x2
                   $y2, $x3, $y3)
{
    /* Calculation the area of 
    triangle. We have skipped 
    multiplication with 0.5 to 
    avoid floating point computations */
    $a = $x1 * ($y2 - $y3) + 
         $x2 * ($y3 - $y1) + 
         $x3 * ($y1 - $y2);
  
    if ($a == 0)
        printf("Yes");
    else
        printf("No");
}
  
// Driver Code
$x1 = 1; $x2 = 1; $x3 = 1;
$y1 = 1; $y2 = 4; $y3 = 5;
collinear($x1, $y1, $x2, $y2, $x3, $y3);
  
// This code is contributed by Sam007.
?>

chevron_right


Output :

Yes

 

Second approach

For three points, slope of any pair of points
must be same as other pair.

For example, slope of line joining (x2, y2)
and (x3, y3), and line joining (x1, y1) and
(x2, y2) must be same.

(y3 - y2)/(x3 - x2) = (y2 - y1)/(x2 - x1)

In other words, 
(y3 - y2)(x2 - x1) = (y2 - y1)(x3 - x2) 

If this equals zero then points lie on a straight line

C

filter_none

edit
close

play_arrow

link
brightness_4
code

// Slope based solution to check 
// if three points are collinear. 
#include <stdio.h>
#include <math.h>
  
/* function to check if 
point collinear or not*/
void collinear(int x1, int y1, int x2, 
               int y2, int x3, int y3)
{
    if ((y3 - y2) * (x2 - x1) == 
        (y2 - y1) * (x3 - x2))
        printf("Yes");
    else
        printf("No");
}
  
// Driver Code
int main()
{
    int x1 = 1, x2 = 1, x3 = 0, 
        y1 = 1, y2 = 6, y3 = 9;
    collinear(x1, y1, x2, y2, x3, y3);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Slope based solution to check 
// if three points are collinear. 
  
import java.io.*;
  
class GFG {
  
/* function to check if 
point collinear or not*/
static void cool_line(int x1, int y1, int x2, 
            int y2, int x3, int y3) 
    if ((y3 - y2) * (x2 - x1) == 
        (y2 - y1) * (x3 - x2)) 
        System.out.println("Yes"); 
    else
        System.out.println("No"); 
  
// Driver Code 
      
    public static void main (String[] args) {
        int a1 = 1, a2 = 1, a3 = 0
        b1 = 1, b2 = 6, b3 = 9
       cool_line(a1, b1, a2, b2, a3, b3); 
          
          
    }
}
//This Code is Contributed by ajit

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Slope based solution to check if three
# points are collinear. 
   
# function to check if
# point collinear or not
def collinear(x1, y1, x2, y2, x3, y3):
     
    if ((y3 - y2)*(x2 - x1) == (y2 - y1)*(x3 - x2)):
        print ("Yes")
    else:
        print ("No")
   
# Driver Code 
x1, x2, x3, y1, y2, y3 = 1, 1, 0, 1, 6, 9
collinear(x1, y1, x2, y2, x3, y3);
  
# This code is contributed 
# by Sachin Bisht

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Slope based solution to check 
// if three points are collinear. 
using System;
  
class GFG
{
      
/* function to check if 
point collinear or not*/
static void cool_line(int x1, int y1, int x2, 
                      int y2, int x3, int y3) 
    if ((y3 - y2) * (x2 - x1) == 
        (y2 - y1) * (x3 - x2)) 
        Console.WriteLine("Yes"); 
    else
        Console.WriteLine("No"); 
  
// Driver Code 
static public void Main ()
{
    int a1 = 1, a2 = 1, a3 = 0, 
    b1 = 1, b2 = 6, b3 = 9; 
    cool_line(a1, b1, a2, b2, a3, b3); 
  
// This code is contributed by ajit 

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Slope based solution to check 
// if three points are collinear. 
  
/* function to check if 
point collinear or not*/
function collinear($x1, $y1, $x2
                   $y2, $x3, $y3
    if (($y3 - $y2) * ($x2 - $x1) == 
        ($y2 - $y1) * ($x3 - $x2)) 
        echo ("Yes"); 
    else
        echo ("No"); 
  
// Driver Code 
$x1 = 1;
$x2 = 1;
$x3 = 0; 
$y1 = 1;
$y2 = 6;
$y3 = 9; 
collinear($x1, $y1, $x2
          $y2, $x3, $y3); 
  
// This code is contributed by ajit
?>

chevron_right



Output :

No 

This article is contributed by Pranav. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : Sam007, jit_t, Akanksha_Rai



Article Tags :
Practice Tags :


2


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