📄 get_geom_jxf.m
字号:
function G=get_geom_jxf(yw,psiw,phiw)
%---------------------------------
load PR2.mat;%导入踏面形状数表
load PL2.mat;
ypl=PL(:,1);ypr=PR(:,1);
load RR1.mat;%导入轨头形状数表
load RL1.mat;
mid=size(RL);
nr=mid(1);%数表的长度
load DL1.mat;%导入轮轨接触角数表
load DR1.mat;
ydl=DL(:,1);
ydr=DR(:,1);
%--------------------------------
lx=-cos(psiw)*sin(phiw);
ly=cos(psiw)*cos(phiw);
lz=sin(psiw);
%--------------------坐标转化,几何约束方程
zg=0.075;%轮对抬高75mm,保证不相互嵌入
zmin=(zg+5);%给定一个足够大的值,保证能够找到轮轨最小垂向距离
nw=325;
em=0.0001;
yminL=RL(1,1);
ymaxL=RL(nr,1);
yminR=RR(nr,1);
ymaxR=RR(1,1);
if abs(yw)<=0.012&&abs(psiw)<=0.1&&abs(phiw)<=0.10 %判断是否超过界限,保证不相互嵌入
for i=1:nw
dw=PL(i,1);
%dL=interp1(ydl,DL,dw,'linear');
%dL=dL(1,2);
dL=DL(i,2);
rL=PL(i,2);
xol=lx*dw;yol=ly*dw;zol=lz*dw;
m=sqrt(1-(lx)^2*(1+(tan(dL))^2));
xL=xol+lx*rL*tan(dL);
yL=yol-rL/(1-(lx)^2)*(lx*lx*ly*tan(dL)+lz*m)+yw;
zL=zol-rL/(1-(lx)^2)*(lx*lx*lz*tan(dL)-ly*m);
if yL>yminL&&yL<ymaxL %接触区域
for j=1:nr
yrL=RL(j,1);zrL=RL(j,2);
if abs(yL-yrL)<=em
delz=(zL-zrL);
else delz=10;
end
if delz<=zmin
zmin=delz;
y_end=dw; %y坐标即轮轨接触点到轮对本体坐标原点距离
z_end=rL; %滚动半径
yr_end=yrL; %钢轨接触点以坐标
zr_end=zrL; %
deltaL=dL; %轮轨接触角
%dwl=yL;
end
end
end
end
zminL=zmin;
%----------------------------------------------------------右边轮轨接触
zmin=5+zg; %给定一个足够大的值,保证能够找到轮轨最小垂向距离
for i=1:nw
dw=PR(i,1);
%dR=interp1(ydr,DR,dw,'linear');
%dR=dR(1,2);
dR=DR(i,2);
rR=PR(i,2);
xor=lx*dw;yor=ly*dw;zor=lz*dw;
m=sqrt(1-(lx)^2*(1+(tan(dR))^2));
xR=xor+lx*rR*tan(dR);
yR=yor-rR/(1-(lx)^2)*(lx*lx*ly*tan(dR)+lz*m)+yw;
zR=zor-rR/(1-(lx)^2)*(lx*lx*lz*tan(dR)-ly*m);
if yR>yminR&&yR<ymaxR
for j=1:nr
yrR=RR(j,1);zrR=RR(j,2);
if abs(yR-yrR)<=em
delz=(zR-zrR);
else delz=10;
end
if delz<=zmin
zmin=delz;
y_endr=dw;
z_endr=rR;
yr_endr=yrR;
zr_endr=zrR;
deltaR=dR;
%dwr=yR;
end
end
end
end
zminR=zmin;
end
G=[-z_end,-z_endr,deltaL,deltaR,zminL,zminR,y_end,y_endr];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -