I have a set of X and Y points that builds a shape and I need to know if an object is inside it or not what is the calculation to it ?
X and Y coords example:
522.56055 2389.885
544.96 2386.3406
554.18616 2369.2385
535.21814 2351.396
497.5552 2355.8396
I am not really good with math :( so i would appreciate some support to understand how it is done.
Example of what I have so far but doesnt seem very reliable:
private boolean isInsideShape(Zone verifyZone, Position object)
{
int corners = verifyZone.getCorners();
float[] xCoords = verifyZone.getxCoordinates();
float[] yCoords = verifyZone.getyCoordinates();
float x = object.getX();
float y = object.getY();
float z = object.getZ();
int i, j = corners - 1;
boolean inside = false;
for(i = 0; i < corners; i++)
{
if(yCoords[i] < y && yCoords[j] >= y || yCoords[j] < y && yCoords[i] >= y)
if(xCoords[i] + (y - yCoords[i]) / (yCoords[j] - yCoords[i]) * (xCoords[j] - xCoords[i]) < x)
inside = !inside;
j = i;
}
return inside;
}
You may start from this: http://en.wikipedia.org/wiki/Point_in_polygon
You also might look into JTS Topology Suite. And in particular use this function.
EDIT: Here is example using JTS:
Here is example using AWT (which is simpler and is part of Java SE):