time_to_impact.m

来自「一个有趣的桌面撞球模拟,可录制avi,输出坐标参数及图象」· M 代码 · 共 60 行

M
60
字号
function tf=time_to_impact(width,height,th,mu,x0,y0,v0,e)
g=32.174;

Xpoly_max=[-mu*g/2*cos(th*pi/180) v0*cos(th*pi/180) x0-width];
Ypoly_max=[-mu*g/2*sin(th*pi/180) v0*sin(th*pi/180) y0-height];
Xpoly_0=[-mu*g/2*cos(th*pi/180) v0*cos(th*pi/180) x0];
Ypoly_0=[-mu*g/2*sin(th*pi/180) v0*sin(th*pi/180) y0];
Vpoly=[-mu*g v0];
A=max(roots(Xpoly_max));
B=min(roots(Xpoly_max));
C=max(roots(Ypoly_max));
D=min(roots(Ypoly_max));
E=max(roots(Xpoly_0));
F=min(roots(Xpoly_0));
G=max(roots(Ypoly_0));
H=min(roots(Ypoly_0));
tfv=roots(Vpoly);

if th>0 & th<90
    DD=[A B C D tfv];
    tf=min(DD);
    return;
    
elseif th>90 & th<180
    DD=[E F C D tfv];
    tf=min(DD);
    return;
    
elseif th>180 & th<270
    DD=[E F G H tfv];
    tf=min(DD);
    return;
    
elseif th>270 & th<360
    DD=[A B G H tfv];
    tf=min(DD);
    return;

elseif th==0 | th==360
    DD=[A B tfv];
    tf=min(DD);
    return;
    
elseif th==90
    DD=[C D tfv];
    tf=min(DD);
    return;
    
elseif th==180
    DD=[E F tfv];
    tf=min(DD);
    return;
    
elseif th==270
    DD=[G H tfv];
    tf=min(DD);
    return;
    
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?