I have created a method called isInPoly that receives the x and y coordinates of 2 lines (so 8 coordinates) and determines where the 2 lines intersect. I know I should have called the method something like intersectLocation or something, but the reason why created it was to see if a point was in a polygon. If you know of a point that is not in the polygon and make a line between that point and the point that you want to test to see if it is inside the polygon, then count how many intersections there are. If the number of intersections are even then the point is not in the polygon and if the number is odd then the point is in the polygon. Anyway I am not getting the right output for this method. My program only shows me that the point is inside the polygon if the test point is at a -1 slope to the known point. I know what I just wrote might be hard to follow can you see if there is any problems with my method?
public static boolean isInPoly(float l1x1, float l1y1, float l1x2, float l1y2, float l2x1, float l2y1, float l2x2, float l2y2) {
// TODO Auto-generated method stub
// l1x1 = the first lines first x coordinate
// l1y1 = the first lines first x coordinate
//.....
//l1m = the first lines slope represented as "m" in the equation y=mx+b
//l1b = the first lines y intercept represented as "b" in the equation y=mx+b
// x = the x coordinate of the intersection on the 2 lines
// y = the x coordinate of the intersection on the 2 lines
float l1m,l2m,l1b,l2b,x,y;
//y=mx+b
//x=(y2-y1)/(x2-x1)
//b=y/(mx)
//slopes of each line
l1m = (l1y2-l1y1)/(l1x2-l1x1);
l2m = (l2y2-l2y1)/(l2x2-l2x1);
//y-intercepts of each line
l1b = l1y2/(l1m*l1x2);
l2b = l2y2/(l2m*l2x2);
//m1x+b1=m2x+b2
//m1x=m2x+b2-b1
//x=(m2/m1)x+((b2-b1)/m1)
//x-(m2/m1)x=((b2-b1)/m1)
//(1-(m2/m1))x=((b2-b1)/m1)
//x=((b2-b1)/m1)/(1-(m2/m1))
//finding the x coordinate of the intersection
x=((l2b-l1b)/l1m)/(1-(l2m/l1m));
//y=mx+b
//finding the x coordinate of the intersection
y=(l1m*x)+l1b;
if(y>=l1y1 && y<=l1y2 && x>=l1x1 && x<=l1x2){
return true;
}
else{
return false;
}
}