antzoom

PURPOSE ^

ANTZOOM - zoom on a region of Antarctica

SYNOPSIS ^

function varargout=antzoom(region)

DESCRIPTION ^

ANTZOOM - zoom on a region of Antarctica

   This function zooms on an existing figure describing Antarctica. 
   The zooming depends on the region name provided as input. 

   Usage:
      varargout=antzoom(region)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function varargout=antzoom(region)
0002 %ANTZOOM - zoom on a region of Antarctica
0003 %
0004 %   This function zooms on an existing figure describing Antarctica.
0005 %   The zooming depends on the region name provided as input.
0006 %
0007 %   Usage:
0008 %      varargout=antzoom(region)
0009 
0010 
0011 %Initialize regions
0012 available_regions=InitializeRegionInfo();
0013 
0014 %Check arguments
0015 if nargin==0,
0016     help antzoom;
0017     disp('   Available regions include:');
0018     for i=1:length(available_regions),
0019         disp(['     ' available_regions(i).name]);
0020     end
0021     return;
0022 end
0023 
0024 
0025 found=0;
0026 for i=1:length(available_regions),
0027     if strcmp(available_regions(i).name,region),
0028         %Make sure the region is a square, enlarge it otherwise, except for Antarctica.
0029         x0=available_regions(i).x0;
0030         x1=available_regions(i).x1;
0031         y0=available_regions(i).y0;
0032         y1=available_regions(i).y1;
0033         if ~strcmp(region,'antarctica'),
0034             dx=x1-x0;
0035             dy=y1-y0;
0036             if dy>dx,
0037                 delta=dy-dx;
0038                 x0=x0-delta/2;
0039                 x1=x1+delta/2;
0040             elseif dy<dx,
0041                 delta=dx-dy;
0042                 y0=y0-delta/2;
0043                 y1=y1+delta/2;
0044             else
0045                 %do nothing;
0046             end
0047         end
0048 
0049         %if output arguments are present, return the limits,
0050         %otherwise, set them on the current graphic.
0051         if nargout==2,
0052             found=1;
0053             varargout{1}=[x0 x1];
0054             varargout{2}=[y0 y1];
0055         else
0056             xlim([x0 x1]);
0057             ylim([y0 y1]);
0058             found=1;
0059             daspect([1;1;1]);
0060         end
0061     else
0062         continue;
0063     end
0064 end
0065 
0066 if found==0,
0067     disp(['Unknow region: ',region]);
0068     disp('Available regions include:');
0069     for i=1:length(available_regions),
0070         disp(['   ' available_regions(i).name]);
0071     end
0072 end
0073 
0074 end
0075 
0076 function incrementedregions=AddAvailableRegion(regions,name,x0,x1,y0,y1);
0077 
0078     if isempty(regions),
0079         incrementedregions(1).name=name;
0080     else
0081         incrementedregions=regions;
0082         incrementedregions(end+1).name=name;
0083     end
0084     incrementedregions(end).x0=x0;
0085     incrementedregions(end).x1=x1;
0086     incrementedregions(end).y0=y0;
0087     incrementedregions(end).y1=y1;
0088 end
0089 
0090 function regions=InitializeRegionInfo()
0091     regions=AddAvailableRegion([],'antarctica',-2507187,2743299,-2143434,2241152);
0092     regions=AddAvailableRegion(regions,'adelieland',2.699*10^4,2.4636*10^6,-2.1848*10^6,-5.2865*10^5);
0093     regions=AddAvailableRegion(regions,'ameryiceshelf',1.5945*10^6,2.2807*10^6,5.1372*10^5,9.0186*10^5);
0094     regions=AddAvailableRegion(regions,'amundsencoast',-2.8*10^5,-1*10^5,-5.8*10^5,-4.6*10^5);
0095     regions=AddAvailableRegion(regions,'amundsensea',-2.1*10^6,-1.45*10^6,-7.5*10^5,-2.5*10^5);
0096     regions=AddAvailableRegion(regions,'banzarecoast',1.6*10^6,2.3*10^6,-1.9*10^6,-1.2*10^6);
0097     regions=AddAvailableRegion(regions,'borchgrevinkcoast',3*10^5,7*10^5,-2.05*10^6,-1.6*10^6);
0098     regions=AddAvailableRegion(regions,'buddcoast',2.1*10^6,2.7*10^6,-1.3*10^6,-.7*10^6);
0099     regions=AddAvailableRegion(regions,'byrdglacier',2.5*10^5,4.5*10^5,-10.8*10^5,-9.2*10^5);
0100     regions=AddAvailableRegion(regions,'dufekcoast',-1.6*10^5,0*10^5,-6.2*10^5,-5.5*10^5);
0101     regions=AddAvailableRegion(regions,'edouardpeninsula',-7.5*10^5,-4*10^5,-1.4*10^6,-1.05*10^6);
0102     regions=AddAvailableRegion(regions,'filchnericeshelf',-9.3781*10^5,-3.6671*10^5,.7389*10^6,1.0360*10^6);
0103     regions=AddAvailableRegion(regions,'fordranges',-8.5*10^5,-5.7*10^5,-1.33*10^6,-1.12*10^6);
0104     regions=AddAvailableRegion(regions,'georgevcoast',.9*10^6,1.7*10^6,-2.4*10^6,-1.7*10^6);
0105     regions=AddAvailableRegion(regions,'getziceshelf',-1.7*10^6,-1.15*10^6,-1.23*10^6,-.5*10^6);
0106     regions=AddAvailableRegion(regions,'hillarycoast',2.6*10^5,4.4*10^5,-1.24*10^6,-1.06*10^6);
0107     regions=AddAvailableRegion(regions,'larseniceshelf',-2.3855*10^6,-1.9649*10^6,0.9498*10^6,1.2996*10^6);
0108     regions=AddAvailableRegion(regions,'nimrodglacier',1*10^5,3.8*10^5,-9*10^5,-7*10^5);
0109     regions=AddAvailableRegion(regions,'oatescoast',5.3*10^5,8.5*10^5,-2.15*10^6,-1.9*10^6);
0110     regions=AddAvailableRegion(regions,'pennelcoast',3*10^5,6*10^5,-2.1*10^6,-1.85*10^6); 
0111     regions=AddAvailableRegion(regions,'pineislandglacier',-1.72*10^6,-1.45*10^6,-4.3*10^5,-1.4*10^5);
0112     regions=AddAvailableRegion(regions,'ronneiceshelf',-1.5*10^6,-.7*10^6,1*10^5,9.3*10^5);
0113     regions=AddAvailableRegion(regions,'rossiceshelf',-8*10^5,4.5*10^5,-13.8*10^5,-5*10^5);
0114     regions=AddAvailableRegion(regions,'ruppertcoast',-11*10^5,-8.5*10^5,-1.34*10^6,-1.14*10^6);
0115     regions=AddAvailableRegion(regions,'scottcoast',2.5*10^5,6*10^5,-1.6*10^6,-1.2*10^6);
0116     regions=AddAvailableRegion(regions,'shackletoncoast',2*10^5,3.8*10^5,-9.8*10^5,-8.4*10^5);
0117     regions=AddAvailableRegion(regions,'shackletoniceshelf',2.4*10^6,2.8*10^6,-7*10^5,-1*10^5);
0118     regions=AddAvailableRegion(regions,'shirasecoast',-6*10^5,-4.4*10^5,-10.9*10^5,-8.2*10^5);
0119     regions=AddAvailableRegion(regions,'siplecoast',-4.3*10^5,-1.5*10^5,-9*10^5,-6.5*10^5);
0120     regions=AddAvailableRegion(regions,'westiceshelf',2.2*10^6,2.7*10^6,0,5*10^5);
0121     regions=AddAvailableRegion(regions,'icestreamE',2.2*10^6,2.7*10^6,0,5*10^5);
0122 end

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003