[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
cylinder.m function
From: |
Kai Habel |
Subject: |
cylinder.m function |
Date: |
Mon, 26 Nov 2007 18:47:53 +0100 |
User-agent: |
Thunderbird 2.0.0.6 (X11/20070801) |
Hello,
I have implemented the cylinder function. It should be compatible with
matlab's function, please try the example.
Kai
ChangeLog:
2007-11-26 Kai Habel <address@hidden>
* plot/cylinder.m: New functions.
* plot/Makefile.in (SOURCES): Add them to the list.
## Copyright (C) 2007 Michael Goffioul, Kai Habel
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
## 02110-1301 USA
## -*- texinfo -*-
## @deftypefn {Function File} {} cylinder
## @deftypefnx {Function File} {} cylinder (@var{r})
## @deftypefnx {Function File} {} cylinder (@var{r}, @var{n})
## @deftypefnx {Function File} address@hidden, @var{y}, @var{z}] =} cylinder
(@dots{})
## @deftypefnx {Function File} {} cylinder (@var{ax}, @dots{})
## Generates three matrices in @code{meshgrid} format, such that
## @code{surf (@var{x}, @var{y}, @var{z})} generates a unit cylinder.
## The matrices are of size @address@hidden@address@hidden
## @var{r} is a vector containing the radius along the z-axis.
## If @var{n} or @var{r} are omitted then default values of 20 or [1 1]
## are assumed.
##
## Called with no return arguments, @code{cylinder} calls directly
## @code{surf (@var{x}, @var{y}, @var{z})}. If an axes handle @var{ax} is passed
## as the first argument, the surface is plotted to this set of axes.
##
## Examples:
## @example
## disp("plotting a cone")
## [X, Y, Z] = cylinder(10:-1:0,50);
## surf(X,Y,Z);
## @end example
## @seealso{sphere}
## @end deftypefn
function [xx,yy,zz] = cylinder (varargin)
nargs = nargin;
args = varargin;
if (nargs > 1 && isscalar (varargin{1}) && ishandle (varargin{1}))
if (! strcmp (get (varargin{1}, "type"), "axes"))
error ("cylinder: expecting first argument to be an axes object");
endif
ax = h;
nargs--;
args(1) = [];
else
ax = gca();
endif
if (nargs == 0)
n = 20;
r = [1 1];
elseif (nargs == 1)
n = 20;
r = args{1};
elseif (nargs == 2)
r = args{1};
n = args{2};
else
print_usage();
endif
if (length(r) < 2)
error("cylinder: length(r) must be larger than 2.")
endif
phi = linspace(0, 2*pi, n+1);
idx = 1:length(r);
[phi, idx] = meshgrid(phi, idx);
z = (idx - 1) / (length(r) - 1);
r = r(idx);
[x, y] = pol2cart(phi, r);
if (nargout > 0)
xx = x;
yy = y;
zz = z;
else
axes(ax);
surf (x, y, z);
endif
endfunction
--- Makefile.in.orig 2007-11-26 18:41:25.000000000 +0100
+++ Makefile.in 2007-11-26 18:41:39.000000000 +0100
@@ -76,6 +76,7 @@
contour.m \
contourc.m \
contourf.m \
+ cylinder.m\
drawnow.m \
errorbar.m \
figure.m \
- cylinder.m function,
Kai Habel <=