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:
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.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/java-exercises/basic/java-basic-exercise-219.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics