I've got five coordinates to form as it were a rectangle (x1,y1),(x2,y2),(x3,y3),(x4,y4),(x1,y1). I put the first four points as the edges of the rectangle on a graph, but I don't know what to do with the fifth set of coordinates which are basically the exact ones as the set of first coordinates.
Then, I've got the lat and long coordinates as (x, y) to check if they're within the above rectangle. I thought of using something similar to the code below, but I'm confused of what to do with the fifth coordinate. This won't form a rectangle but also it's the exact same thing as the first set!
public class Main {
//main method
public static void main (String[] args) {
//declared the variables and initialized the point values
int x1 = 1;
int y1 = 2;
int x2 = 4;
int y2 = 2;
int x3 = 1;
int y3 = 5;
int x4 = 4;
int y4 = 5;
int x5 = 1; //not used in creating rectangle boundary
int y5 = 2; //not used in creating rectangle boundary
//given point to be checked
int x = 2;
int y = 2;
//calling the user defined method to check if point lies inside rectangle
if (checkPoint(x1,y1, x2,y2, x3,y3, x4,y4, x,y))
System.out.print("Yes, given point lies inside rectangle");
else
System.out.print("No, given point does not lie inside rectangle");
}
//user defined method to find area of triangle
static float triangleArea(int x1, int y1, int x2, int y2, int x3, int y3) {
return (float)Math.abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0);
}
//user defined method to check whether point lies inside rectangle or not
static boolean checkPoint(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int x, int y) {
//area of rectangle ABCD
float ABCD = (x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2))/2 + (x1*(y4-y3) + x4*(y3-y1) + x3*(y1-y4))/2;
//find area of triangle PAB
float PAB = triangleArea(x, y, x1, y1, x2, y2);
//find area of triangle PBC
float PBC = triangleArea(x, y, x2, y2, x3, y3);
//find area of triangle PCD
float PCD = triangleArea(x, y, x3, y3, x4, y4);
// find area of triangle PAD
float PAD = triangleArea(x, y, x1, y1, x4, y4);
//check if area of rectangle is
//equal to areas formed by four triangles
if(ABCD == PAB + PBC + PCD + PAD)
//then return true
return true;
else
//else return false
return false;
}
}
The above code doesn't find the lat and long (x, y) within the specified rectangle though, so not sure if it's because I'm not using the fifth coordinate or something. Any assistance would be much appreciated. Cheers!