function usa_voronoi_display ( gen_lon, gen_lat, lon, lat, filename, ...
  plot_title )

%*****************************************************************************80
%
%% usa_voronoi_display() displays generators, and their Voronoi diagram.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    08 December 2016
%
%  Input:
%
%    real GEN_LON(*), GEN_LAT(*), the longitude and latitude of 
%    generators to be displayed on a map of Florida, using black dots.
%
%    real LON(*), LAT(*), additional points, to be shown using
%    red dots.
%
%    string FILENAME, a name for the graphics file.
%    If FILENAME is '', the plot is not saved.
%
%    string PLOT_TITLE, a title for the plot.
%
  if ( nargin < 4 )
    cen_lon = [];
    cen_lat = [];
    filename = '';
    plot_title = '';
  end
%
%  Destroy all row vectors!
%
  gen_lat = gen_lat(:);
  gen_lon = gen_lon(:);
%
%  Open a new graphics figure.
%
  figure
%
%  Create a map axis suitable for the continental USA.
%
  lat_min = 25.0;
  lat_max = 55.0;
  lon_min = -145.0;
  lon_max = -60.0;

  ax = usamap ( 'conus' );
  set ( ax, 'Visible', 'off' );
  latlim = getm ( ax, 'MapLatLimit' );
  lonlim = getm ( ax, 'MapLonLimit' );
  states = shaperead ( 'usastatehi',...
    'UseGeoCoords', true, 'BoundingBox', [lonlim', latlim']);
  geoshow ( ax, states, 'FaceColor', [0.9, 0.9, 1.0 ] );
%
%  Mark each generator.
%
  gen_num = length ( gen_lat );

  plotm ( gen_lat, gen_lon, 'k.', 'Markersize', 15 );

% for i = 1 : gen_num
%   textm ( gen_lat(i), gen_lon(i), tag(i), 'fontweight', 'bold' )
% end
%
%  Mark each auxilliary point.
%
  if ( ~ isempty ( lat ) )
    plotm ( lat, lon, 'r.', 'Markersize', 15 );
  end

  lon2 = gen_lon;
  lat2 = gen_lat;
  for i = 1 : 10
    x = lon_min;
    y = lat_max + ( i / 10.0 ) * ( lat_min - lat_max );
    lon2 = [ lon2; x ];
    lat2 = [ lat2; y ];
  end

  for i = 1 : 10
    x = lon_min + ( i / 10.0 ) * ( lon_max - lon_min );
    y = lat_min;
    lon2 = [ lon2; x ];
    lat2 = [ lat2; y ];
  end

  for i = 1 : 10
    x = lon_max;
    y = lat_min + ( i / 10.0 ) * ( lat_max - lat_min );
    lon2 = [ lon2; x ];
    lat2 = [ lat2; y ];
  end

  for i = 1 : 10
    x = lon_max + ( i / 10.0 ) * ( lon_min - lon_max );
    y = lat_max;
    lon2 = [ lon2; x ];
    lat2 = [ lat2; y ];
  end
%
%  Now compute the (finite part of the) Voronoi diagram.
%
  [ vx, vy ] = voronoi ( lat2, lon2 );
%
%  Draw the Voronoi lines.
%
  linem ( vx, vy, 'r-', 'LineWidth', 2 );

  title ( plot_title );
%
%  If FILENAME is not empty, save a copy of the plot.
%
  if ( ~ isempty ( filename ) )
    fprintf ( 1, '\n' );
    fprintf ( 1, '  Plot saved as "%s"\n', filename );
    print ( '-dpng', filename )
  end

  return
end

