Collinear points are those which lies on a single straight line. We have 3 points in the X-Y plane with their (x,y) coordinates given. To find out if the given 3 points are collinear, we will check the angle which the lines between each pair of points make with the X-axis. If the angles are same then the points are collinear.

We have points p1,p2, and p3 given. Lets see the different cases:-

## 1. Points are collinear

Let us consider the following three points:-

p1 -> (1,3)

p2 -> (4,6)

p3 -> (7,9)

In this case the angle which the line (p1,p2) makes with the X-axis is same as the angle which the line(p2,p3) makes with the X-axis. Hence the points are collinear.

**Proof**:-

The angle for line (p1,p2) = (y2 – y1)/(x2 – x1)

The angle for line (p2,p3) = (y3 – y2)/(x3 – x2)

As the angles are same, we have :

=> (y2 – y1)/(x2 – x1) = (y3 – y2)/(x3 – x2)

=> (y2 – y1)*(x3 – x2) = (y3 – y2)*(x2 – x1)

Hence we get,

=> (y2 – y1)*(x3 – x2) – (y3 – y2)*(x2 – x1) = 0

So to check the collinearity of 3 points, the following expression should hold true:-

(y2 – y1)*(x3 – x2) – (y3 – y2)*(x2 – x1) = 0

Following figure shows 3 collinear points and the value of the above expression:-

## 2. Points p3 lies clockwise to the line (p1,p2)

Let us consider the following three points:-

p1 -> (1,3)

p2 -> (4,6)

p3 -> (8,7)

In this case the angle which the line (p1,p2) makes with the X-axis is greater than the angle which the line(p2,p3) makes with the X-axis.

The angle for line (p1,p2) = (y2 – y1)/(x2 – x1)

The angle for line (p2,p3) = (y3 – y2)/(x3 – x2)

As the angle for line (p1,p2) is greater we have :

=> (y2 – y1)/(x2 – x1) > (y3 – y2)/(x3 – x2)

=> (y2 – y1)*(x3 – x2) > (y3 – y2)*(x2 – x1)

Hence we get,

=> (y2 – y1)*(x3 – x2) – (y3 – y2)*(x2 – x1) > 0

So if the value of the above expression is greater than 0, then the point p3 lies to the clockwise of line (p1,p2).

## 3. Points p3 lies anti-clockwise to the line (p1,p2)

Let us consider the following three points:-

p1 -> (1,3)

p2 -> (4,6)

p3 -> (5,9)

In this case the angle which the line (p1,p2) makes with the X-axis is smaller than the angle which the line(p2,p3) makes with the X-axis.

The angle for line (p1,p2) = (y2 – y1)/(x2 – x1)

The angle for line (p2,p3) = (y3 – y2)/(x3 – x2)

As the angle for line (p1,p2) is greater we have :

=> (y2 – y1)/(x2 – x1) < (y3 – y2)/(x3 – x2)

=> (y2 – y1)*(x3 – x2) < (y3 – y2)*(x2 – x1)

Hence we get,

=> (y2 – y1)*(x3 – x2) – (y3 – y2)*(x2 – x1) < 0

So if the value of the above expression is smaller than 0, then the point p3 lies to the anti-clockwise of line (p1,p2).

## Java Implementation

Following Java function checks whether given 3 points are collinear, otherwise prints the orientation of the point p3 w.r.t the line (p1,p2).

public static void checkCollinear(long x1, long y1, long x2, long y2, long x3, long y3) { long res =(y2 - y1) * (x3 - x2) - (y3 - y2) * (x2 - x1); if (res > 0) { System.out.println("Point 3 is clockwise to line (p1,p2)"); } else if (res < 0) { System.out.println("Point 3 is anti-clockwise to line (p1,p2)"); } else { System.out.println("Points are Collinear"); } }

Invoking the above function:-

```
public static void main(String[] args) {
checkCollinear(1, 3, 4, 6, 7, 9);
checkCollinear(1, 3, 4, 6, 8, 7);
checkCollinear(1, 3, 4, 6, 5, 9);
}
```

Output :-

Points are Collinear Point 3 is clockwise to line (p1,p2) Point 3 is anti-clockwise to line (p1,p2)

**Problems which can be solved using this concept**

1. Finding the Convex hull