1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| w=3; % pulsation
ph0=0.5; % angle terre-centre trajectoire
alpha=0.3; % rapport ph/th
beta= 4;% nombre de période
t=0:0.001:beta*2*3.1416/w;% base temps
kmax1=floor(1000*beta*2*3.1416/w)+1; %dimension de t
% phase 1
th=sin(w*t);
ph=sin(2*w*t);
r=1+0.5*t;
[x,y,z]=sph2cart(th,alpha*(ph+1+ph0),r);
% phase 2
ph2min=alpha*(ph(kmax1)+1+ph0);
ph2max=acos(x(1)/r(kmax1));
ph2=ph2min:0.001:ph2max;
th2=ph2*0;
r2=th2*0+r(kmax1);
kmax2=floor((ph2max-ph2min)*1000)+1;
[x2,y2,z2]= sph2cart (th2,ph2,r2);
% phase 3
ph3min=alpha*(ph(1)+1+ph0);
ph3=ph2max:-0.001:ph3min;
th3=ph3*0;
kmax3=(ph2max-ph3min)*1000+1;
for u=1:kmax3
r3(u)=cos(ph3min)/cos(ph3(u));
end
[x3,y3,z3]= sph2cart (th3,ph3,r3);
% données
% animation
alpha1=10;
alpha2=20;
alpha3=20;
dmax1=floor(kmax1/alpha1);
dmax2=floor(kmax2/alpha2);
dmax3=floor(kmax3/alpha3);
% barre
L=0.5;
%phase 1
for i=1:dmax1
teta=atan((z(alpha1*i+1)-z(alpha1*i))/(y(alpha1*i+1)-y(alpha1*i)));
xb=[x(alpha1*i),x(alpha1*i)];
yb=[y(alpha1*i)+L/2*sin(teta),y(alpha1*i)-L/2*sin(teta)];
zb=[z(alpha1*i)+L/2*cos(teta),z(alpha1*i)-L/2*cos(teta)];
plot3 (x,y,z,x2,y2,z2,'b',x3,y3,z3,'b',xb,yb,zb,'k')
axis([0 6 -4 4 0 6]);
traj(i)=getframe;
end
% phase 2
for i=1:dmax2
xb=[x2(alpha2*i),x2(alpha2*i)];
yb=[y2(alpha2*i)+L/2*sin(teta),y2(alpha2*i)-L/2*sin(teta)];
zb=[z2(alpha2*i)+L/2*cos(teta),z2(alpha2*i)-L/2*cos(teta)];
plot3 (x,y,z,x2,y2,z2,'b',x3,y3,z3,'b',xb,yb,zb,'k')
axis([0 6 -4 4 0 6]);
traj(i+dmax1)=getframe;
end
%phase 3
for i=1:dmax3
xb=[x3(alpha3*i) x3(alpha3*i)];
yb=[y3(alpha3*i)+L/2*sin(teta),y3(alpha3*i)-L/2*sin(teta)];
zb=[z3(alpha3*i)+L/2*cos(teta),z3(alpha3*i)-L/2*cos(teta)];
plot3 (x,y,z,x2,y2,z2,'b',x3,y3,z3,'b',xb,yb,zb,'k')
axis([0 6 -4 4 0 6]);
traj(i+dmax1+dmax2)=getframe;
end |
Partager