How to Check Orientation of 3 Ordered Points in Java?


In this article we are going to find the orientation of 3 ordered points. Here orientation means that the given points form clockwise, anticlockwise or collinear shape in space.

In the above diagram a, b, c are the three points which check the orientation of shape in space. We find the orientation of three given points by calculating the slope.

To calculate slope and to calculate the orientation of 3 ordered points.

Slope of line segment

Slope of line segment $(a,b):\theta=\left ( y_{b}-y_{a} \right )/\left ( x_{b} -x_{a}\right )$

Slope of line segment $(b,c):\phi=\left ( y_{c} -y_{b}\right )/(x_{c}-x_{b})$

And hence, the orientation depends on the following expression:

$$(y_{b}-y_{a})(x_{c}-x_{b})-(y_{c}-y_{b})(x_{b}-x_{a})\:Or\:(y2-y1)*(x3-x2)-(y3-y2)*(x2-x1)$$

i.e., whether it is positive, negative or

  • If the expression is zero, then θ = φ. Hence the orientation is collinear.

  • If the expression is negative, then θ < φ. Hence the orientation is anti-clockwise.

  • If the expression is positive, then θ > φ. Hence the orientation is clockwise.

Let’s start!

To show you some instances

Instance-1

Suppose the 3 ordered points are (0,3), (4,2), (3,1)

After checking the orientation of 3 ordered points the result will be:

The given 3 points form: Clockwise

Instance-2

Suppose the 3 ordered points are (0,3), (1,2), (9,5)

After checking the orientation of 3 ordered points the result will be:

The given 3 points form: CounterClockwise

Instance-3

Suppose the 3 ordered points are (2,2), (3,3), (4,4)

After checking the orientation of 3 ordered points the result will be:

The given 3 points form: Linear

Algorithm

Step 1 − Declare the 3 ordered points.

Step 2 − Pass the three given points to the expression i.e. (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y).

Step 3 − Check for the condition of linear, clockwise and counterclockwise.

Step 4 − Print the result.

Multiple Approaches

We have provided the solution in different approaches.

  • By taking Static Input

  • By Using User Defined Method

Let’s see the program along with its output one by one.

Approach-1: By Using Static Input

In the approach, first the 3 points will be passed to expression to check for the condition of linear, clockwise and counter-clockwise. And the result will be printed to output.

Example

public class Main{
   //main method
   public static void main(String[] args){
      //Declaring variables
      int x1=0, y1=1;
      int x2=4, y2=3;
      int x3=3, y3=2;
      
      //expression to check for 3 ordered point
      int val = (y2 - y1) * (x3 - x2) - (x2 - x1) * (y3 - y2);
      
      // check for collinear
      if (val == 0){
         //printing collinear orientation
         System.out.print("The given 3 points form : Linear");
      }
      
      //check for clockwise
      else if(val > 0){
         
         //printing clockwise orientation
         System.out.print("The given 3 points form: Clockwise");
      } else {
        
         //printig counter clockwise orientation
         System.out.print("The given 3 points form: CounterClockwise");
      }
   }
}

Output

The given 3 points form: Clockwise

Approach-2: By Using User Defined Method

In the approach, first the 3 points will be passed to expression using a user defined method to check for the condition of linear, clockwise and counter-clockwise. And the result will be printed to output.

Example

public class Main {
   public static void main(String[] args){
      Point a = new Point(2, 2);
      Point b = new Point(3, 3);
      Point c = new Point(4, 4);
      
      //calling user defined method
      int o = orientation(a, b, c);
     
      //check for Linear orientation
      if (o==0)	
      
         //printing Linear orientation
         System.out.print("The given 3 points form : Linear");
     
      //check for Clockwise orientation
      else if (o == 1)
     
         //printing clockwise orientation
         System.out.print("The given 3 points form : Clockwise");
      else
      
         //printing counter clockwise orientation
         System.out.print("The given 3 points form : CounterClockwise");
   }

   // user defined method
   public static int orientation(Point a, Point b,	Point c){
     
     //expression to check for 3 ordered point
      int val = (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y);
      
      // check for collinear
      if (val == 0) return 0; 
      
      // check for clock or counterclock wise
      return (val > 0)? 1: 2;
   }
}
class Point{
   int x, y;
   Point(int x,int y){
      this.x=x;
      this.y=y;
   }
}

Output

The given 3 points form : Linear

In this article, we explored how to check orientation of 3 ordered points by using Java programming language.

Updated on: 10-Mar-2023

204 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements