home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / plot / polar_int_2.m < prev    next >
Text File  |  1996-09-28  |  3KB  |  109 lines

  1. # Copyright (C) 1993, 1994, 1995 John W. Eaton
  2. # This file is part of Octave.
  3. # Octave is free software; you can redistribute it and/or modify it
  4. # under the terms of the GNU General Public License as published by the
  5. # Free Software Foundation; either version 2, or (at your option) any
  6. # later version.
  7. # Octave is distributed in the hope that it will be useful, but WITHOUT
  8. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  9. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  10. # for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with Octave; see the file COPYING.  If not, write to the Free
  13. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  14.  
  15. function polar_int_2 (theta, rho, fmt)
  16.  
  17.   if (nargin != 3)
  18.     usage ("polar_int_2 (theta, rho, fmt)");
  19.   endif
  20.  
  21.   if (any (imag (theta)))
  22.     theta = real (theta);
  23.   endif
  24.  
  25.   if (any (imag (rho)))
  26.     rho = real (rho);
  27.   endif
  28.  
  29.   if (is_scalar (theta))
  30.     if (is_scalar (rho))
  31.       x = rho * cos (theta);
  32.       y = rho * sin (theta);
  33.       plot_2_s_s (x, y, fmt);
  34.     endif
  35.   elseif (is_vector (theta))
  36.     if (is_vector (rho))
  37.       if (length (theta) != length (rho))
  38.     error ("polar: vector lengths must match");
  39.       endif
  40.       if (rows (rho) == 1)
  41.     rho = rho';
  42.       endif
  43.       if (rows (theta) == 1)
  44.     theta = theta';
  45.       endif
  46.       x = rho .* cos (theta);
  47.       y = rho .* sin (theta);
  48.       plot_2_v_v (x, y, fmt);
  49.     elseif (is_matrix (rho))
  50.       [t_nr, t_nc] = size (theta);
  51.       if (t_nr == 1)
  52.     theta = theta';
  53.     tmp = t_nr;
  54.     t_nr = t_nc;
  55.     t_nc = tmp;
  56.       endif
  57.       [r_nr, r_nc] = size (rho);
  58.       if (t_nr != r_nr)
  59.     rho = rho'
  60.     tmp = r_nr;
  61.     r_nr = r_nc;
  62.     r_nc = tmp;
  63.       endif
  64.       if (t_nr != r_nr)
  65.     error ("polar: vector and matrix sizes must match");
  66.       endif
  67.       x = diag (cos (theta)) * rho;
  68.       y = diag (sin (theta)) * rho;
  69.       plot_2_v_m (x, y, fmt);
  70.     endif
  71.   elseif (is_matrix (theta))
  72.     if (is_vector (rho))
  73.       [r_nr, r_nc] = size (rho);
  74.       if (r_nr == 1)
  75.     rho = rho';
  76.     tmp = r_nr;
  77.     r_nr = r_nc;
  78.     r_nc = tmp;
  79.       endif
  80.       [t_nr, t_nc] = size (theta);
  81.       if (r_nr != t_nr)
  82.     theta = rho'
  83.     tmp = t_nr;
  84.     t_nr = t_nc;
  85.     t_nc = tmp;
  86.       endif
  87.       if (r_nr != t_nr)
  88.     error ("polar: vector and matrix sizes must match");
  89.       endif
  90.       diag_r = diag (r);
  91.       x = diag_r * cos (theta);
  92.       y = diag_r * sin (theta);
  93.       plot_2_m_v (x, y, fmt);
  94.     elseif (is_matrix (rho))
  95.       if (size (rho) != size (theta))
  96.     error ("polar: matrix dimensions must match");
  97.       endif
  98.       x = rho .* cos (theta);
  99.       y = rho .* sin (theta);
  100.       plot_2_m_m (x, y, fmt);
  101.     endif
  102.   endif
  103.  
  104. endfunction
  105.