home *** CD-ROM | disk | FTP | other *** search
- function [xx,yy,zz] = superquad(n,e,m);
- %SUPERQUAD Barr's "superquadrics" ellipsoid.
- % [x,y,z] = SUPERQUAD(n,e,m) is a generalized ellipsoid with
- % n = vertical roundness, e = horizontal roundness and m facets.
- % If values of n and e are not given, random values are supplied.
- % The default value of m is 24.
- %
- % SUPERQUAD(...) , with no output arguments, does a SURF plot.
- %
- % Ref: A. H. Barr, IEEE Computer Graphics and Applications, 1981,
- % or, Graphics Gems III, David Kirk, editor, 1992.
- %
- % See also: SQDEMO.
-
- % Copyright (c) 1984-93 by The MathWorks, Inc.
-
- if nargin < 3, m = 24; end
- if nargin < 2, e = max(0,1+randn); end
- if nargin < 1, n = max(0,1+randn); end
-
- u = (-m:2:m)/m*pi;
- v = u'/2;
-
- cosv = cos(v); sinv = sin(v);
- cosu = cos(u); sinu = sin(u);
- cosv(1) = 0; cosv(m+1) = 0;
- sinu(1) = 0; sinu(m+1) = 0;
-
- t = sign(cosv) .* abs(cosv).^n ;
- x = t * (sign(cosu) .* abs(cosu).^e );
- y = t * (sign(sinu) .* abs(sinu).^e );
- z = (sign(sinv) .* abs(sinv).^n ) * ones(size(u));
-
- if nargout == 0
- surf(x,y,z)
- else
- xx = x; yy = y; zz = z;
- end
-