use point_on_surface for more accurate center point