📄 ellips.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>ellips.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>varargout</span>=<span class=defun_name>ellips</span>(<span class=defun_in>Center,Shape,radius,n</span>)
<br><span class=h1>% ELLIPS Creates ellipse.
</span><br><span class=help>%
</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% [X,Y] = ellips(Center,Shape,radius,n)
</span><br><span class=help>% [X,Y,Z] = ellips(Center,Shape,radius,n)
</span><br><span class=help>%
</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% This function interpolates ellipse by lines in 2d space
</span><br><span class=help>% or by patches in 3d space respectivelly. The ellipsoid
</span><br><span class=help>% is described as
</span><br><span class=help>% radius^2=(x-Center)'*Shape*(x-Center).
</span><br><span class=help>%
</span><br><span class=help>% The number of lines used for interpolation is given
</span><br><span class=help>% by argument n in 2d case. In 3d case the argument
</span><br><span class=help>% n has the same meaning in the Matlab function sphere(n).
</span><br><span class=help>%
</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% Center [2x1] or [3x1] Center of the ellipse.
</span><br><span class=help>% Shape [2x2] or [3x3] Shape of the ellipse.
</span><br><span class=help>% n [1x1] Density of interpolation (default 20).
</span><br><span class=help>%
</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>%
</span><br><span class=help>% 2d ellipse
</span><br><span class=help>% [x,y] = ellips([1;1],[1 0.5;0.5 1],1);
</span><br><span class=help>% figure; plot(x,y);
</span><br><span class=help>%
</span><br><span class=help>% 3d ellipsoid
</span><br><span class=help>% [x,y,z] = ellips([1;1;1],[1 0 0;0 2 0; 0 0 3],1);
</span><br><span class=help>% figure; mesh(x,y,z);
</span><br><span class=help>%
</span><br><hr><br><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox
</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac
</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a>
</span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a>
</span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a>
</span><br><br><span class=help1>% <span class=help1_field>Modifications:</span>
</span><br><span class=help1>% 30-apr-2004, VF
</span><br><span class=help1>% 13-Feb-2003, VF
</span><br><span class=help1>% 24-6-2000 V. Hlavac, comments polished.
</span><br><br><hr>Center=Center(:);
<br>
<br><span class=comment>% input arguments processing
</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 4, n=20; <span class=keyword>end</span>
<br>
<br><span class=comment>% dimension
</span><br>dim = size(Shape,1);
<br>
<br><span class=keyword>if</span> dim == 3,
<br> <span class=comment>% 3D ellipsoid, creates the matrix X,Y,Z appropriate for using in
</span><br> <span class=comment>% the functions mesh,surf, etc.
</span><br>
<br> [X,Y,Z] = sphere(n);
<br>
<br> X=radius*X;
<br> Y=radius*Y;
<br> Z=radius*Z;
<br>
<br> [A,p]=chol(Shape);
<br> <span class=keyword>if</span> p ~= 0,
<br> <span class=error>error</span>(<span class=quotes>'Shape matrix must be positive definite'</span>);
<br> <span class=keyword>end</span>
<br> A=inv(A);
<br>
<br> [ROWS,COLUMNS]=size(X);
<br>
<br> <span class=comment>% transforms sphere to ellipse
</span><br> <span class=keyword>for</span> i=1:ROWS,
<br> P=[X(i,:);Y(i,:);Z(i,:)];
<br> Q=A*P;
<br>
<br> <span class=comment>% if the translation is given then translate points
</span><br> Q=Q+repmat(Center(:),1,COLUMNS);
<br>
<br> X(i,:)=Q(1,:);
<br> Y(i,:)=Q(2,:);
<br> Z(i,:)=Q(3,:);
<br> <span class=keyword>end</span> <span class=comment>% for i=1:ROWS
</span><br>
<br> <span class=comment>% return variables
</span><br> <span class=stack>varargout</span>{1}=X;
<br> <span class=stack>varargout</span>{2}=Y;
<br> <span class=stack>varargout</span>{3}=Z;
<br>
<br><span class=keyword>elseif</span> dim == 2,
<br>
<br> from=0;
<br> to=2*pi;
<br> step=(to-from)/n;
<br> X=cos([from:step:to]);
<br> Y=sin([from:step:to]);
<br>
<br> X=radius*X;
<br> Y=radius*Y;
<br>
<br> [A,p]=chol(Shape);
<br> <span class=keyword>if</span> p ~= 0,
<br> <span class=error>error</span>(<span class=quotes>'Shape matrix must be positive definite'</span>);
<br> <span class=keyword>end</span>
<br> A=inv(A);
<br>
<br> P=[X;Y];
<br> Q=A*P;
<br>
<br> Q=Q+repmat(Center(:),1,n+1);
<br>
<br> X=Q(1,:);
<br> Y=Q(2,:);
<br>
<br> <span class=comment>% return variables
</span><br> <span class=stack>varargout</span>{1}=X;
<br> <span class=stack>varargout</span>{2}=Y;
<br>
<br><span class=keyword>end</span>
<br>
<br><span class=jump>return</span>;
<br><span class=comment>%EOF
</span><br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -