Visibility-Constrained Path Planning for Unmanned Aerial Vehicles