classdef GeographicGlobe< matlab.graphics.primitive.world.Group & matlab.graphics.mixin.UIParentable & matlab.graphics.internal.GraphicsBaseFunctions
%globe.graphics.GeographicGlobe Control geographic globe appearance and behavior
%
%   GeographicGlobe properties control the appearance and behavior of a
%   GeographicGlobe object.

 
% Copyright 2019-2020 The MathWorks, Inc.

    methods
        function out=GeographicGlobe
            %GeographicGlobe Constructor
            %
            %   obj = globe.graphics.GeographicGlobe(Name,Value) sets the
            %   geographic globe's property values using the Name, Value pairs.
        end

        function camheading(in) %#ok<MANU>
            %CAMHEADING Set or query camera heading angle
            %
            %   CAMHEADING(g,heading) sets the heading angle of the camera for
            %   the specified geographic globe. Setting the heading angle
            %   rotates the camera around its z-axis. Specify heading as a
            %   number in degrees between -360 and 360.
            %
            %   CAMHEADING(g,'auto') lets the geographic globe choose the
            %   camera heading angle based on its plotted data.
            %
            %   CAMHEADING(g,'manual') requests that the geographic globe
            %   preserve its current camera heading angle as closely as
            %   possible when it is resized or when its plotted data change.
            %
            %   outHeading = CAMHEADING(g,___) additionally returns the heading
            %   angle of the camera.
            %
            %   Example
            %   -------
            %   % View of Gross Reservoir from above South Boulder peak.
            %   lat = 39.95384;
            %   lon = -105.29916;
            %   height = 5000;
            %   heading = 270;
            %   pitch = -15;
            %
            %   uif = uifigure;
            %   g = geoglobe(uif);
            %   campos(g,lat,lon,height)
            %   camheading(g,heading)
            %   campitch(g,pitch)
            %
            %   See also CAMHEIGHT, CAMPITCH, CAMPOS, CAMROLL, GEOGLOBE
        end

        function camheight(in) %#ok<MANU>
            %CAMHEIGHT Set or query camera height
            %
            %   CAMHEIGHT(g,height) sets the ellipsoidal height of the camera
            %   for the specified geographic globe. Specify height as a number
            %   in meters. If you specify height as a value at or below the
            %   terrain, then CAMHEIGHT sets the height to a value one meter
            %   above the terrain.
            % 
            %   CAMHEIGHT(g,'auto') lets the geographic globe choose the camera
            %   height based on its plotted data.
            %
            %   CAMHEIGHT(g,'manual') requests that the geographic globe
            %   preserve its current camera height as closely as possible when
            %   it is resized or when its plotted data change.
            %
            %   outHeight = CAMHEIGHT(g,___) additionally returns the height of
            %   the camera.
            %
            %   Example
            %   -------
            %   % Western view from the top of Mount Evereest,
            %   lat = 27.988121;
            %   lon = 86.924973;
            %   heading = 270;
            %   pitch = 0;
            %   height = 8848;
            %
            %   uif = uifigure;
            %   g = geoglobe(uif);
            %   campos(g,lat,lon)
            %   campitch(g,pitch)
            %   camheading(g,heading)
            %   camheight(g,height)
            %
            %   See also CAMHEADING, CAMPITCH, CAMPOS, CAMROLL, GEOGLOBE
        end

        function campitch(in) %#ok<MANU>
            %CAMPITCH Set or query camera pitch angle
            %
            %   CAMPITCH(g,pitch) sets the pitch angle of the camera for the
            %   specified geographic globe. Setting the pitch angle rotates the
            %   camera around its y-axis. Specify pitch as a number in degrees
            %   between -90 and 90.
            %
            %   CAMPITCH(g,'auto') lets the geographic globe choose the camera
            %   pitch angle based on its plotted data.
            %
            %   CAMPITCH(g,'manual') requests that the geographic globe
            %   preserve its current camera pitch angle as closely as possible
            %   when it is resized or when its plotted data change.
            %
            %   outPitch = CAMPITCH(g,___) additionally returns the pitch angle
            %   of the camera.
            %
            %   Example
            %   -------
            %   % View of Mount Everest from the northwest.
            %   lat = 28.061;
            %   lon = 86.876;
            %   height = 8460;
            %   roll = 0.071853;
            %   heading = 154.21;
            %   pitch = -15.254;
            %
            %   uif = uifigure;
            %   g = geoglobe(uif);
            %   campos(g,lat,lon,height)
            %   camheading(g,heading)
            %   campitch(g,pitch)
            %   camroll(g,roll)
            %
            %   % Reset pitch to 0 to look directly at the mountain.
            %   campitch(g,0)
            %
            %   See also CAMHEADING, CAMHEIGHT, CAMPOS, CAMROLL, GEOGLOBE
        end

        function campos(in) %#ok<MANU>
            %CAMPOS Set or query camera position
            %
            %   CAMPOS(g,lat,lon) sets the latitude and longitude of the camera
            %   for the specified geographic globe.
            %
            %   CAMPOS(g,lat,lon,height) sets the latitude, longitude, and
            %   ellipsoidal height of the camera. Specify height as a number in
            %   meters. If you specify height as a value at or below the
            %   terrain, then CAMPOS sets the height to a value one meter above
            %   the terrain.
            %
            %   CAMPOS(g,'auto') lets the geographic globe choose the camera
            %   position based on its plotted data.
            %
            %   CAMPOS(g,'manual') requests that the geographic globe preserve
            %   its current camera position as closely as possible when it is
            %   resized or when its plotted data change.
            %
            %   CAMPOS(g) returns the position of the camera as a 3-element
            %   vector of the form [latOut, lonOut, heightOut].
            %
            %   [latOut,lonOut,heightOut] = campos(g,___) additionally returns
            %   the position of the camera.
            %
            %   Example
            %   -------
            %   % View location near Eiffel Tower in Paris.
            %   lat = 48.858288;
            %   lon = 2.294548;
            %   height = 400;
            %
            %   uif = uifigure;
            %   g = geoglobe(uif);
            %   campos(g,lat,lon,height)
            %
            %   See also CAMHEADING, CAMHEIGHT, CAMPITCH, CAMROLL, GEOGLOBE
        end

        function camroll(in) %#ok<MANU>
            %CAMROLL Set or query camera roll angle
            %
            %   CAMROLL(g,roll) sets the roll angle of the camera for the
            %   specified geographic globe. Setting the roll angle rotates the
            %   camera around its x-axis. Specify roll as a number in degrees
            %   between -360 and 360.
            %
            %   CAMROLL(g,'auto') lets the geographic globe choose the camera
            %   roll angle based on its plotted data.
            %
            %   CAMROLL(g,'manual') requests that the geographic globe preserve
            %   its current camera roll angle as closely as possible when it is
            %   resized or when its plotted data change.
            %
            %   outRoll = CAMROLL(g,___) additionally returns the roll angle of
            %   the camera.
            %
            %   Example
            %   -------
            %   % View of Mount Washington from the west.
            %   lat = 44.2668325084665;
            %   lon = -71.3848761217129;
            %   height = 1756.98037748709;
            %   roll = 0.19496217129034;
            %   pitch = -9.40298052804785;
            %   heading = 90.1619532367068;
            %
            %   uif = uifigure;
            %   g = geoglobe(uif);
            %   campos(g,lat,lon,height)
            %   camheading(g,heading)
            %   campitch(g,pitch)
            %   camroll(g,roll)
            %
            %   See also CAMHEADING, CAMHEIGHT, CAMPITCH, CAMPOS, GEOGLOBE
        end

        function delete(in) %#ok<MANU>
        end

        function geobasemap(in) %#ok<MANU>
            %GEOBASEMAP Set or query basemap on geographic globe
            %
            %   GEOBASEMAP(g,basemap) sets the basemap of the specified
            %   geographic globe.
            %
            %   basemap = GEOBASEMAP(g) returns the basemap of the specified
            %   geographic globe.
            %
            %   Example
            %   -------
            %   uif = uifigure;
            %   g = geoglobe(uif);
            %   geobasemap(g,'streets')
            %
            %   See also addCustomBasemap, GEOGLOBE
        end

        function hold(in) %#ok<MANU>
            %HOLD Hold current geographic globe
            %
            %   HOLD(g,'on') holds the current plot and all geographic globe
            %   properties, including the current color and linestyle, so that
            %   subsequent graphing commands add to the existing graph without
            %   resetting the color and linestyle.
            %
            %   HOLD(g,'off') returns to the default mode whereby plotting
            %   commands erase the previous plots and reset all axis properties
            %   before drawing new plots.
            %
            %   HOLD(g) by itself, toggles the hold state.
            %
            %   Algorithm note: HOLD(g,'on') sets the NextPlot property of the
            %   current figure and geographic globe to "add".
            %
            %   HOLD(g,'off') sets the NextPlot property of the current
            %   geographic globe to "replace".
        end

        function reset(in) %#ok<MANU>
            %RESET Reset geographic globe object to their defaults
            %
            %   reset(gl) resets all properties on the object identified by gl
            %   to their default values. Properties that do not have default
            %   values are not affected. MATLAB does not reset Position or
            %   Units properties.
        end

    end
    properties
        %Basemap Map on which to plot data
        %
        %   Basemap is a character vector or string scalar specifying the
        %   map on which to plot data on a globe. Permissible values
        %   include any basemap supported by geographic axes,
        %   'openstreetmap', or any custom basemap. Use addCustomBasemap to
        %   include your own custom basemap. The value is returned as a
        %   character vector. The default value is 'satellite'.
        Basemap;

        %ColorOrder Color order
        %
        %   Color order, specified as a three-column matrix of RGB
        %   triplets.
        ColorOrder;

        %NextPlot Properties to reset
        %
        %   NextPlot is a character vector or string scalar specifying
        %   properties to reset when adding a new plot to the globe,
        %   specified as one of these values:
        %
        %   'add' — Add new plots to the globe. Do not delete existing
        %   plots or reset globe properties before displaying the new plot.
        %
        %   'replacechildren' — Delete existing plots before displaying the
        %   new plot. Reset the NextSeriesIndex property to 1, but do not
        %   reset other globe properties. The next plot added to the globe
        %   uses the first color and line style based on the
        %   NextSeriesIndex property value.
        %
        %   'replace' — Delete existing plots and reset globe properties,
        %   except Position and Units, to their default values before
        %   displaying the new plot.
        %
        %   'replaceall' — Delete existing plots and reset globe
        %   properties, except Position and Units, to their default values
        %   before displaying the new plot.
        NextPlot;

        NextSeriesIndex;

        %Position Size and location of geographic globe
        %
        %   Position is a four-element vector of the form [left bottom
        %   width height] specifying the location and size of the
        %   geographic globe. The default value is [0 0 1 1].
        Position;

        %Terrain Name of terrain source
        %
        %   Terrain is a character vector or string scalar specifying the
        %   name of the terrain source and is read-only. Permissible values
        %   include one of the following options or the name of custom
        %   terrain data previously added using addCustomTerrain:
        %    'gmted2010' - Global terrain derived from USGS GMTED2010
        %                  (Internet required)
        %    'none'      - Terrain elevation is 0 everywhere
        %   The property value is read-only and can be set in the
        %   constructor. The value is returned as a character vector.
        %   The default value is 'gmted2010'.
        Terrain;

        %Units Position units
        %
        %   Units is a character vector or string scalar specifying the
        %   position units. Permissible values include: 'normalized'
        %   (default), 'inches', 'centimeters', 'characters', 'points', or
        %   'pixels'.
        Units;

    end
end
