No BSD License  

Highlights from
Numerical Analysis and Graphic Visualization with MATLAB

g_cont(x, y, f, s)
% function g_cont plots a curvilinear grid or 
% contour on the curvilinear gird. Used in L2_23.m
% Copyright S. Nakamura, 1995 
function g_cont(x, y, f, s)
x_max=max(max(x));
x_min=min(min(x));
y_max=max(max(y));
y_min=min(min(y));
axis('square')
axis([x_min,x_max,y_min,y_max]); hold on
axis('off');
kmax=length(s);
fprintf('Type 1 if you wish to plot grid only.\n')
fprintf('Type 0 if you wish to plot contour.\n')
m_plot=input('?');
if m_plot == 1
   [ni,nj] = size(x);
   for j=1:nj
      plot(x(:,j),y(:,j))
   end
   for i=1:ni
      plot(x(i,:),y(i,:))
   end
   return
end
fprintf('Type 1 if you wish to plot grid also.\n')
fprintf('Type 0 if you wish to plot contour only.\n')
m_plot=input('?');
if m_plot == 1
   [ni,nj] = size(x);
   for j=1:nj
      plot(x(:,j),y(:,j))
   end
   for i=1:ni
      plot(x(i,:),y(i,:))
   end
else

   [ni,nj] = size(x);

   for j=1:nj-1:nj
      plot(x(:,j),y(:,j))
   end

   for i=1:ni-1:ni
      plot(x(i,:),y(i,:))
   end
end
for i = 1:ni-1
  for j=1:nj-1
    f_min = min([f(i,j), f(i+1,j), f(i,j+1), f(i+1,j+1)]);
    f_max = max([f(i,j), f(i+1,j), f(i,j+1), f(i+1,j+1)]);
    ip = i+1;
    jp = j+1;
    for k = 1:kmax
      if f_min <= s(k) & s(k) <= f_max
        l=0;
        if (s(k) - f(i,j)) * (s(k) - f(ip,j)) <= 0; l=l+1;
          [xp(l),yp(l)] = GC_inter(s(k),i,j,ip,j,x, y,f);
        end
        if (s(k) - f(ip,j)) * (s(k) - f(ip,jp)) <= 0,l=l+1;
          [xp(l),yp(l)] = GC_inter(s(k),ip,j,ip,jp,x, y,f);
        end
        if (s(k) - f(i,j)) * (s(k) - f(i,jp)) <= 0,l=l+1;
          [xp(l),yp(l)] = GC_inter(s(k),i,j,i,jp,x, y,f);
        end
        if (s(k) - f(i,jp)) * (s(k) - f(ip,jp)) <= 0,l=l+1;
          [xp(l),yp(l)] = GC_inter(s(k),i,jp,ip,jp,x, y,f);
        end
        if l >= 2, plot([xp(1),xp(2)], [yp(1),yp(2)], '--');
        end
        if l == 4 plot([xp(3),xp(4)], [yp(3),yp(4)], '--');
        end
      end
    end
  end
end
return

Contact us at files@mathworks.com