1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| function [Yimpact, timpact] = impact(y)
options = odeset('initialstep' , 10^-9);
[T,Y] = ode45(@odefunction,[0,0.6],y,options);
% Constantes
% inertie de la jambe autour du centre de gravité
mjambe=3.7; % kg
lCG=0.26; % m
mb=0.43; % masse de la jambe
r=0.11; % rayon de la balle
JCjambe = 0.05;
Jjambe = JCjambe + mjambe*lCG^2;
ljambe=0.51;
e=.7;
for i=1:length(T) % Boucle qui compare la distance entre le centre de la balle et la jambe pour chaque valeurs du vecteur temps
% Position du centre du ballon à l'instant i : xb = Y(i,7) ) et yb = Y(i,8)
% Angle theta à l'instant i : theta = Y(i,5)
d = abs ((- cot(Y(i,5)))*Y(i,7) - Y(i,8)+ljambe) / sqrt((-cot(Y(i,5)))^2 + 1); %distance entre la jambe et le centre de la balle
if d < r && Y(i,5) > 0 % si l'angle theta est positif et que la distance entre la jambe et le centre de la balle est plus petite que le rayon il y a impact
timpact=T(i);
break;
end
end |
Partager