clip arbitrary polygons