2007年4月24日 星期二

hw7

我有參加本週(4/19)上課

設有三桿相連結成端桿(dyad)之型式。請利用網路講義中之函數dyad及dyad_draw作分析。
function dyad_draw(rho,theta,td,tdd)其中:

各桿之對應長度rho=[a, a+5, a-5]cm,a=(你的學號末一碼)+10;
各桿之對應起始角度theta=[0, 0, 0]度;
各桿之對應角速度為td=[0.2, 0.5, 0 .3]rad/s;
各桿之對應角加速度為tdd=[0, 0.1, 0.2]rad/s^2;
問:

當t=[1 2 3 4 5]秒時,此端桿之對應方位如何?
繪出三桿之結點之速度,加速度與時間t之關係。
能作出此時間區段之動畫嗎?

動畫網址 http://www.youtube.com/watch?v=rPgKJmOifzY

第零秒
dyad_draw([53 58 48],[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])


第一秒 第二秒

第三秒

第四秒

第五秒

本作業會用到的function

dyad

function [vec,dyadata] = dyad(rho,theta,td,tdd)
% Analyzes a dyad linkage composing a crank and a dyad.
% Inputs: rho:length of links
% theta:incling angles, deg.
% td:angular velocity, rad/s
% tdd:angular acceleration, rad/s^2
% Outputs: vec:absoute length of links
% th:angles of links, velocities & acc, deg
% dyadata:original data, in complex forms
theta=theta(:);
rho=rho(:);
n=length(rho);i
f nargin <>
tdd=zeros(size(rho));
end
if nargin == 2,td=ones(size(rho));
end
if length(td) == 1
td=ones(size(rho))*td;
endif length(tdd) == 1,
tdd=ones(size(rho))*tdd;
end
td=td(:);
tdd=tdd(:);
d2g=pi/180;
tt=exp(i*theta*d2g);
pp=rho.*tt;vv=i*td.*pp;
aa=-pp.*td.^2+i*pp.*tdd;
dyadata=[pp vv aa];
vec=[abs(sum(dyadata));angle(sum(dyadata))/d2g];


dyad_draw
function [truev,truea]=dyad_draw(rho,theta,td,tdd)
% analyze a dyad linkage composing cranks and a dyad with drawing.
% Inputs: rho:length of links
% theta:incling angles, deg.
% td:angular velocity, rad/
% tdd:angular acceleration,rad/s^2
clf;
[vec,data] = dyad(rho,theta,td,tdd);
x=[0;cumsum(real(data(:,1)))];y=[0;cumsum(imag(data(:,1)))];f
or i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],1);
end
for k=1:length(rho)
x0=x(k+1);y0=y(k+1);
vx=x0+real(data(k,2));vy=y0+imag(data(k,2));
ax=x0+real(data(k,3));ay=y0+imag(data(k,3));
line([x0 vx],[y0 vy],'marker','s','linewidth',2);
line([x0 ax],[y0 ay],'marker','s','color','r','linewidth',3)
truev(k)=((vx-x0)^2+(vy-y0)^2)^0.5;
truea(k)=((ax-x0)^2+(ay-y0)^2)^0.5;
end
sdata=sum(data);
ss=[real(sdata(1)) imag(sdata(1))];
vv=[real(sdata(2)) imag(sdata(2))];
aa=[real(sdata(3)) imag(sdata(3))];
line([0 ss(1)],[0 ss(2)],'linestyle',':','linewidth',2)
line([ss(1) ss(1)+vv(1)],[ss(2) ss(2)+vv(2)],...
'marker','d','color','g','linewidth',3)
line([ss(1) ss(1)+aa(1)],[ss(2) ss(2)+aa(2)],...
'marker','d','color','m','linewidth',3)
axis equal;grid on




linkshape
function linkshape(A,B,dd)
% Draw a link
% A,B:Initial final coordinates of link
% d:thickness of link(negative for line link)
if nargin==2,dd=1;end;
d=abs(dd);
AB=(B(1)+j*B(2))-(A(1)+j*A(2));
D=abs(AB);th=angle(AB);
t=linspace(pi/2,2.5*pi,20);
Cout=max(d/2,0.2)*exp(j*t');Cin=Cout/2;
if dd>0,
P=[0;Cin;Cout(1:10);D+Cout(11:20);D+Cin;D+Cout(20);Cout(1)];
else
P=[Cin;0;D;D+Cin];
end
xx=real(P);yy=imag(P);
x=xx*cos(th)-yy*sin(th)+A(1);
y=xx*sin(th)+yy*cos(th)+A(2);
line(x,y)
axis equal



dyad_run
function dyad_run(rho,theta,td,tdd,time)
%本函式引用dyad_draw function
%最後一項time是時間矩陣,輸入秒數則可以做成動畫
thetaTEMP=theta;
tdTEMP=td;
thetaTEMP=theta;
for n=1:length(time)
for m=1:length(rho)
tdTEMP(m)=td(m)+tdd(m)*(n-1);
thetaTEMP(m)=theta(m)+td(m)*(n-1)+0.5*tdd(m)*(n-1)^2;
end
[v,a]=dyad_draw(rho,thetaTEMP,tdTEMP,tdd)
if n > 1
for k=1:length(rho)
vv(k,n-1)=v(k);
aa(k,n-1)=a(k);
end
end
pause(0.5)
end
for j=1:length(rho)
plot(vv(j,:),'r+-')
plot(aa(j,:),'cx--')
end

沒有留言: