=
0:0.01:5
%
函数变量取值范围
y
=
x
%
函数
plot(x,y)
axis
equal
hold
on
rho
=
0.1
%
圆的半径
rho
=
rho*ones(1,100)
theta
=
linspace(-pi,pi,100)
[xx,yy]
=
pol2cart(theta,rho)
h
=
plot(xx,yy,'r')
for
ii
=
0:0.01:5
data
=
ii
set(h,'Xdata',xx+ii,'Ydata',data+yy)
pause(0.01)
%
调整速度
end
如果你的直线x,y的比例相差较大,那么axis
equal应该删掉,用椭圆代替圆(画出来仍然是圆),椭圆的长轴和短轴的比例可以查看坐标系的DataAspectRatio属性。
还有一个取巧的方法,我刚回答完另一个人,你可以参考一下
x
=
0:0.01:5
%
函数变量取值范围
y
=
sin(x)
%
函数
plot(x,y)
hold
on
h
=
plot(0,sin(0),'or',
'MarkerSize',
6)%
调节markersize后的数值调节圆的大小
for
ii
=
0:0.01:5
data
=
sin(ii)
set(h,'Xdata',ii,'Ydata',data)
pause(0.01)
%
调整速度
end
从图形来看,一共n个同心圆,外面大圆n等分,然后从每个等分点作所有同心圆的两条切线
如果用极坐标表示,可以很容易求解切点,直接上画图的代码
n = 10 %同心圆数量m = 40 % 等分点数
R = 1 % 外圆半径
s = 0:0.01*pi:2*pi % 控制圆的光滑程度的极坐标角度
t = 0:2*pi/m:2*pi % 等分点极坐标角度
x0 = R*cos(t)y0 = R*sin(t) % 等分点直角坐标
color=['r','g','c','k','m','y'] % 画图颜色
lc = length(color) % 颜色数组长度,超出后从头开始
for i = 1:n % 开始同心圆循环
r = R/n*i % 当前同心圆半径
a = acos(r/R) % 切线与圆心线角度(弧度制)
x1 = r*cos(t-a)y1 = r*sin(t-a) % 任意等分点相对当前同心圆的第一个切点坐标
x2 = r*cos(t+a)y2 = r*sin(t+a) % 任意等分点相对当前同心圆的第二个切点坐标
plot(r*cos(s),r*sin(s),color(mod(i,lc)+1))hold on % 画同心圆
for j = 1:m % 对每一个等分点循环
plot([x0(j),x1(j)],[y0(j),y1(j)],color(mod(i,lc)+1))hold on % 第一条切线
plot([x0(j),x2(j)],[y0(j),y2(j)],color(mod(i,lc)+1))hold on % 第二条切线
end
end
axis equal % 横纵坐标轴比例一致
% 半径为10的圆t = linspace(0,2*pi,100)
x = 10 * cos(t)
y = zeros( size(x) )
z = 10 * sin(t)
plot3(x, y, z)
% 10个半径为1的小球
hold on
for t = 0 : 2*pi/10 : 2*pi*9/10
x0 = 10 * cos(t)
z0 = 10 * sin(t)
[X,Y,Z] = sphere
x = X + x0
z = Z + z0
surf(x,Y,z)
end
axis equal
view(0,0)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)