Test if mouse clic inside an ofPath shape


I am working with shapes as ofPath. I would like to select a shape with the mouse so i need to test if the mouse is clicked inside the shape.

I know there is a function inside(x, y) but tied to the class ofPolyline.

Is there a way to access such a method from within ofPath or do i have to convert the path to a polyline everytime i need to test the mouse clic ?

thank you

If you are OK with Processing code:

// based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
  // check if input is inside polygon
  // points is an array of polygon points; input is point to check if its iside polygon
  boolean checkPointInsidePolygon(Point[] points, PVector input)
    int i, j;
    boolean c = false;
    for (i = 0, j = points.length-1; i < points.length; j = i++) {
      if ( ((points[i].y>input.y) != (points[j].y>input.y)) &&
        (input.x < (points[j].x-points[i].x) * (input.y-points[i].y) / (points[j].y-points[i].y) + points[i].x) )
        c = !c;
    return c;

pass ofPath points instead of Point[] points as a parameter

Hey, thanks for the tip.
I was more looking for an oF integrated solution (if it exists)
I will have a look at it. Quite theoretical though, but really interesting.

For now i am just converting the path into an ofPolyline when needed in order to be able to use the inside() method… but seems a messy solution…

Your method with polyline is probably the easiest as of right now.