📄 curve.m
字号:
function curve(action)
xa=0;ya=1;za=0;
xb=sqrt(3)/2;yb=-1/2;zb=0;
xc=-sqrt(3)/2;yc=-1/2;zc=0; %%A,B,C坐标
xn=0;yn=0;zn=-1; %%初始卫星所对准的点N
a=str2num(get(findobj(gcf,'tag','h_e1'),'string'));
b=str2num(get(findobj(gcf,'tag','h_e2'),'string'));
c=str2num(get(findobj(gcf,'tag','h_e3'),'string'));
xp=a;yp=b;zp=c; %%要求卫星所对准的点P
alpha1=acos((xa*xp+ya*yp)/(sqrt(xa^2+ya^2)*sqrt(xp^2+yp^2)));
alpha2=acos((xb*xp+yb*yp)/(sqrt(xb^2+yb^2)*sqrt(xp^2+yp^2)));
alpha3=acos((xc*xp+yc*yp)/(sqrt(xc^2+yc^2)*sqrt(xp^2+yp^2)));
A=[alpha1;
alpha2;
alpha3];
alpha=min(A,[],1); %%计算alpha
beta=acos((xn*xp+yn*yp+zn*zp)/sqrt(xn^2+yn^2+zn^2)/sqrt(xp^2+yp^2+zp^2)); %%计算beta
v=50; %%喷气对卫星本身的相对速度,单位是m/s
Q=0.004*v; %%喷气喷量最大值,单位是Kg/s
J1=30000; %%卫星对于过其质心一轴的转动惯量,单位是Kg*m^2
J2=20000; %%卫星对于过其质心另一轴的转动惯量,单位是Kg*m^2
r=1; %%6个喷嘴到卫星转动轴的距离,单位是m
l=10; %%上下两组喷嘴平面之间的距离,单位是m
a1=6*Q*v*r/J2;
Time1=sqrt(alpha/a1); %%计算第一次加速减速总时间
a2=2*Q*v*l/J1;
Time2=sqrt(beta/a2); %%计算第二次加速减速总时间
aa=(cos(alpha)+cos(pi/3-alpha)+(sin(pi/3-alpha)-sin(alpha))*cos(pi/3+alpha)/sin(pi/3+alpha))*Q*v*l/J1;
Time=sqrt(beta/aa); %%计算加速减速总时间
t11=linspace(0,Time1,100);
t12=linspace(Time1,2*Time1,100);
y11=a1.*t11;
y12=2*a1*Time1-a1.*t12;
t21=linspace(0,Time2,100);
t22=linspace(Time2,2*Time2,100);
y21=a2.*t21;
y22=2*a2*Time2-a2.*t22;
beta11=a2.*t21.^2/2;
beta12=a2*Time2^2/2+a2*Time2.*(t22-Time2)-a2.*(t22-Time2).^2/2;
tt1=linspace(0,Time,100);
tt2=linspace(Time,2*Time,100);
yy1=aa.*tt1;
yy2=2*aa*Time-aa.*tt2;
beta21=aa.*tt1.^2/2;
beta22=aa*Time^2/2+aa*Time.*(tt2-Time)-aa.*(tt2-Time).^2/2;
figure
set(gcf,'numbertitle','off','name','角速度与转角曲线图');
set(gcf,'defaultuicontrolfontsize',11,'color',[0.4 0.8 0.6]);
uicontrol(gcf,'style','text',...
'unit','normalized',...
'position',[0.24 0.94 0.1 0.03],...
'string','模型一',...
'fontsize',10);
uicontrol(gcf,'style','text',...
'unit','normalized',...
'position',[0.70 0.64 0.1 0.03],...
'string','模型二',...
'fontsize',10);
subplot(3,2,1)
plot(t11,y11,'r',t12,y12,'r')
ylabel('自转角速度')
xlabel('时间')
hold on
subplot(3,2,3)
plot(2*Time1,0,'k',2*Time1+t21,y21,'k',2*Time1+t22,y22,'k')
ylabel('角速度')
xlabel('时间')
hold on
subplot(3,2,5)
plot(2*Time1,0,'r',2*Time1+t21,beta11,'r',2*Time1+t22,beta12,'r')
ylabel('转角')
xlabel('时间')
hold on
subplot(3,2,4)
plot(tt1,yy1,'k',tt2,yy2,'k')
ylabel('角速度')
xlabel('时间')
hold on
subplot(3,2,6)
plot(tt1,beta21,'r',tt2,beta22,'r')
ylabel('转角')
xlabel('时间')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -