作业帮 > 综合 > 作业

用matlab画出圆形成轨迹的动画

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/24 17:11:16
用matlab画出圆形成轨迹的动画
已知原点是(0,0)初点(8,0)半径52一点点轨迹形成
应该是原点(8,0) 半径52做出matlab轨迹形成代码~
这个如何?
clc;
clear
x1=8;
y1=0;
r=52;
st=2*pi; %旋转的角度
st0=0;
x3=x1-r*cos(st0(1))
y3=y1+r*sin(st0(1))
h1=plot([x1 x3],[y1 y3],'r.-');
n=100;
st0=linspace(0,st,n);
axis(r*[-1 1 -1 1]+[8 8 0 0]);hold on;
axis square;hold on;
for i=1:n
x3=x1-r*cos(st0(i));
y3=y1+r*sin(st0(i));
plot(x3,y3,'r*')
pause(.01)
end
再问: 恩恩~不错~先谢啦~不过我还有点疑问呢,那要是有两个圆轨迹,一个半径小但转的角度多些,另一个半径大但转的角度稍微小一点,如何将这两个合在一个三维上看运动轨迹对比呢?
再答: 这个怎么样?
r=25;
zcb=60;
bb=2.5/2+.0 ;
gs=20;
gs2=round(gs/2-.1);
bc=.5-rem(gs/2,1);
x00=([1:gs2]-bc)*bb*2;
x=[-fliplr(x00) x00]
y=sqrt(r^2-x.^2);
y1=min(y);
y2end1=y([2:end-1]);
x2end1=x([2:end-1]);

yz=y2end1-y1;
r1=(zcb-y1)*.5;
n=300;
st0=linspace(0,pi/2,n);
axis([-25 25 -60 0 -50 0]);hold on;
for j=1:n
st=st0(j);
r22=r1.^2+yz.^2-2*r1.*yz.*cos(st);
r2=sqrt(r22);
coscx=(r2.^2+yz.^2-r1^2)./(2*r2.*yz);
cx=pi-acos(coscx);
yc=-y2end1-r2.*cos(cx);
zc=-r2.*sin(cx);
yc=[yc yc(1:2)];
zc=[zc zc(1:2)];
r3=zcb-y2end1;
y2=-y2end1-r3.*cos(cx);
z2=-r3.*sin(cx);
y2=[-y(1)-2*r1.*cos(st) y2 -y(1)-r1*2.*cos(st)];
z2=[-2*r1.*sin(st) z2 -r1*2.*sin(st)];
if j==1
for i=1:gs
h(i)=plot3(x(i)*[1 1 1],[0 -y(i) y2(i)],[0 0 z2(i)],'b.-');
end
else
for i=1:gs
set(h(i),'xdata',x(i)*[1 1 1],'ydata',[0 -y(i) y2(i)],'zdata',[0 0 z2(i)]);
end
pause(.001);
end
end