问题描述
我有一个可以沿 X 轴移动的弹簧的 nice implementation。
绘图(N - 弹簧圈数):
t=0:0.01:20;
alpha=0:0.01:2*pi;
N=10;
h=4;
R=0.25;
for i=1:N
Xpr(i)=(i-1)*1/(N-1);
if i==1
Ypr(i)=2.5*R+h;
elseif i==N
Ypr(i)=2.5*R+h;
else
Ypr(i)=2.5*R+h/2+h/4*(-1)^i;
end
end
Spring=plot(Xpr*2,Ypr);
动画:
t=0:0.01:20;
alpha=0:0.01:2*pi;
x0=1;
x=x0+0.3*cos(alpha);
for i=1:length(t)
set(Spring,'Xdata',Xpr*x(i));
pause(0.01);
end
我需要在飞机上顺时针旋转这个弹簧。一端固定。怎么做?
尝试了很多方法。他们都没有工作。动画实现的想法是使用旋转矩阵。像这样:
function L = Rot2D (Vers,phi)
L(1,:) = Vers(1,:)*cos(phi)-Vers(2,:)*sin(phi)
L(2,:)*sin(phi)+Vers(2,:)*cos(phi)
endfunction
然后将弹簧的每个线圈打包成一个向量:
N=10;
h=4;
R=0.25;
for i=1:N
Xpr(i)=(i-1)*1/(N-1);
if i==1
Ypr(i)=2.5*R+h;
SpringVector=[Xpr(i);Ypr(i)];
elseif i==N
Ypr(i)=2.5*R+h;
newElem=[Xpr(i);Ypr(i)];
SpringVector=[SpringVector; newElem];
else
Ypr(i)=2.5*R+h/2+h/4*(-1)^i;
newElem=[Xpr(i);Ypr(i)];
SpringVector=[SpringVector; newElem];
end
end
y0=1;
y=y0+cos(alpha);
N=10;
for i=1:N
phi=-acos(y(i)-1);
RotArrSpring=Rot2D(SpringVector,phi);
set(Spring,'XData',RotArrSpring(1,:)*x(i),'YData',RotArrSpring(2,:)*y(i));
pause(0.01);
end
如何解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)