w3resource

Java: Check if a point (x, y) is in a triangle or not

Java Basic: Exercise-219 with Solution

Write a Java program to check if a point (x, y) is in a triangle or not. A triangle is formed by three points.

Input:
x1,y1,x2,y2,x3,y3,xp,yp separated by a single space.

Sample Solution:

Java Code:

// Importing the necessary Java utility package
import java.util.*;

// Main class named "Main"
public class Main { 
    // Method to calculate the outer product of vectors (x1, y1) and (x2, y2) with respect to point (x, y)
    private double outer_product(double x, double y, double x1, double y1, double x2, double y2){
        // Shifting vectors to be relative to the point (x, y)
        x1 = x1 - x;
        y1 = y1 - y;
        x2 = x2 - x;
        y2 = y2 - y;

        // Calculating the cross product (outer product) of the two vectors
        double s = x1 * y2 - y1 * x2;
        return s;
    } 

    // Method to input coordinates and determine if a point is inside a triangle
    public void point(){
        // Creating a Scanner object for input
        Scanner sc = new Scanner(System.in);

        // Arrays to store coordinates of the triangle vertices (x, y)
        double [] x = new double[3];
        double [] y = new double[3];

        // Prompting the user to input the coordinates of the three vertices of the triangle
        System.out.println("Input (x1, y1)");            
        x[0] = sc.nextDouble();
        y[0] = sc.nextDouble();

        System.out.println("Input (x2, y2)");            
        x[1] = sc.nextDouble();
        y[1] = sc.nextDouble();

        System.out.println("Input (x3, y3)");            
        x[2] = sc.nextDouble();
        y[2] = sc.nextDouble();

        // Prompting the user to input the coordinates of the point (xp, yp)
        System.out.println("Input (xp, yp)");            
        double xp = sc.nextDouble();
        double yp = sc.nextDouble();

        // Array to store the results of the outer product calculations for each edge of the triangle
        boolean [] ans = new boolean[3];

        // Calculating the outer product for each edge and determining if the point is inside the triangle
        for(int i=0; i < 3; i++){
            ans[i] = outer_product(xp, yp, x[i], y[i], x[(i+1)%3], y[(i+1)%3]) > 0.0;
        }

        // Checking if all outer products have the same sign, indicating the point is inside the triangle
        if(ans[0] == ans[1] && ans[1] == ans[2]){
            // The point is inside the triangle
            // Additional processing, if needed, can be added here
        }
        else{
            // The point is outside the triangle
            System.out.println("The point is outside the triangle.");
        }
    }

    // Main method to create an object of the class and invoke the point method
    public static void main(String[] args) {
        Main obj = new Main();
        obj.point();
    }
} 

Sample Output:

Input (x1, y1)
2
6
Input (x2, y2)
3
5
Input (x3, y3)
4
6
Input (xp, yp)
5
6
The point is outside the triangle.

Flowchart:

Flowchart: Java exercises: Check if a point (x, y) is in a triangle or not.

Java Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a Java program to print the number of prime numbers which are less than or equal to a given integer.
Next: Write a Java program to compute and print sum of two given integers (more than or equal to zero). If given integers or the sum have more than 80 digits, print "overflow".

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.