📄 drawcardioid.m
字号:
function [xcar,ycar]=drawcardioid(varargin)
%判断变长度变量的个数
error(nargchk(0,3,nargin));
nin = nargin;
%如果用户没有确定参数的数值
if nin==0
% 中心点的坐标数值
cx1=0; cy1=0;
% 圆形的半径
r=1;
%如果输入参数的数值个数为1
elseif nin==1
cx1=0; cy1=0;
r=varargin{1};
%如果输入参数的个数为2
elseif nin==2
cx1=0;
cy1= varargin{1};
r = varargin{2};
%如果函数输入参数的个数为3
else
cx1=varargin{1};
cy1=varargin{2};
r=varargin{3};
end
%判断输出参数的个数
if nargout==0
flag=1;
else
flag=0;
end
% 定义图形的角度变量数值
theta = linspace(0,2*pi,120);
% 计算图形数据点的坐标数值
x0 = r*cos(theta);
y0 = r*sin(theta);
x1 = x0+cx1;
y1 = y0+cy1;
cx2 = 2*x0+cx1;
cy2 = 2*y0+cy1;
x3=x0.*cos(theta)-y0.*sin(theta);
y3=x0.*sin(theta)+y0.*cos(theta);
for k=1:120
x2(k,:) = cx2(k)+x0;
y2(k,:) = cy2(k)+y0;
xx(k)=cx2(k)+x3(k);
yy(k)=cy2(k)+y3(k);
end
xcar = xx;
ycar = yy;
%绘制图形
if flag
plot(cx1,cy1,'mp','Markersize',6);hold on;
plot(x1,y1);
axis([cx1-3.2*r cx1+3.2*r cy1-3.2*r cy1+3.2*r]);
axis manual;
hold on
daspect([1 1 1]);
set(gcf,'doublebuffer','on');
for k = 1:120
plot(x2(k,:),y2(k,:),'g',xx(k),yy(k),'r*');
grid on;
pause(0.05);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -